Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用

news2024/11/26 16:47:53

一、unittest参数化介绍

参数化测试用于当需要使用多组不同的测试数据测试同一个方法的时候
paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
实现unittest参数化的方式有多种,如ddt、paramunittest等

 二、paramunittest模块安装

pip install paramunittest

三、示例

1、元组数据实现参数化

import unittest
import paramunittest # pip install paramunittest


# 参数化元组类型数据
@paramunittest.parametrized(
    (20,30,50),
    (30,40,70),
    (60,80,140)
)

class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

2、列表数据实现参数化

import unittest
import paramunittest # pip install paramunittest


# 参数化列表类型数据
@paramunittest.parametrized(
    [20,30,50],
    [30,40,70],
    [60,80,140]
)

class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

3、字典数据实现参数化

import unittest
import paramunittest # pip install paramunittest



# 参数化字典类型数据(字典中的key要和setParameters方法中的形参一致)
@paramunittest.parametrized(
    {"numa":20,"numb":30,"result":50},
    {"numa":30,"numb":40,"result":70},
    {"numa":60,"numb":80,"result":140}
)


class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

4、参数通过函数或者数据对象传入实现参数化

import unittest
import paramunittest # pip install paramunittest


# # 参数化:数据对象
# testdata = [
#     {"numa":20,"numb":30,"result":50},
#     {"numa":30,"numb":40,"result":70},
#     {"numa":60,"numb":80,"result":140}
#             ]
# # 参数化类型数据
# @paramunittest.parametrized(
#     *testdata
# )

# 参数化:函数
def get_data():
    return [{"numa":20,"numb":30,"result":50},
            {"numa":30,"numb":40,"result":70},
            {"numa":60,"numb":80,"result":140}]
# 参数化类型数据
@paramunittest.parametrized(
    *get_data()
)


class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-进程信号

Linux-进程信号 一,信号入门信号的概念生活中的信号技术应用角度的信号使用kill -l 查看信号列表信号的处理方式 二,信号产生通过终端按键产生信号Core Dumpcode dump标志位 通过系统调用向进程发信号killraiseabort 由软件条件产生信号SIGPIPESIGALRM 硬…

三届跻身世界级,长沙国际工程机械展的突破之路

文 | 智能相对论 作者 | 易不二 长沙正在成为全球工程机械企业争相奔赴的产业“盛宴”。 近日完美落幕的第三届长沙国际工程机械展,留下了全球30多个国家、1500余家企业“同台竞技”的精彩亮相,并达成了536亿元的现场交易额。 卡特彼勒、日立、沃尔沃…

2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)

目录 第十三届蓝桥杯大赛软件赛省赛C/C大学B组真题(考后回顾)试题 A: 九进制转十进制试题 B: 顺子日期试题 C: 刷题统计试题 D: 修剪灌木试题 E: X 进制减法试题 F: 统计子矩阵试题 G: 积木画试题 H: 扫雷试题 I: 李白打酒加强版试题 J: 砍竹子 第十三届…

【JavaStript】

目录 🐷1. JavaScript 的书写形式 🛩1.1 行内式 💛 1.2 内嵌式 🍗1.3 外部式 🍿2. JavaScricpt 的一些常用语句 🛴2.1 输入:prompt 👽2.2 输出:alert &#x1f…

Linux线程间的同步和互斥 进程间传统通信方式 5.16

Linux线程间的同步和互斥 同步:有顺序的考虑 按照约定的顺序相互配合完成一件事情(红绿灯) {释放 产生 资源1(V操作);;申请 资源-1(p操作)} 信号量代表某一类资源&am…

RocketMQ整理

RocketMQ在阿里云上的商业版本,集成了阿里内部一些更深层次的功能及运维定制。开源版本,功能上略有缺失,但大体上是一样的。 使用Java开发,便于深度定制。最早叫MetaQ。消息吞吐量虽然依然不如Kafka,但是却比RabbitMQ高很多。在阿里内部,RocketMQ集群每天处理的请求数超过…

监控需求来源及主流方案对比

我们从开始了解监控系统来说,首先我们要先了解监控的需求来源,即监控系统都可以用于做什么? 监控需求来源 其实最初的需求很简单,即"系统出问题了我们要能及时感知"。后面随着技术的不断发展,我们对监控系统提出了更…

Linux的超级用户及权限

目录 一:Linux下的两个用户 二:权限 1:目录文件 文件创建的默认权限 2:普通文件 一:Linux下的两个用户 在使用Linux的时候会有两个身份,第一个是普通用户,普通用户在很多方面是受阻的,原因就是权限不够,在这种情况下就有一个超级用户,也…

iOS图片系列一 图片的基本属性

图片在项目的开发中使用频率很高,但是绝大部分都是作为普通的展示或者偶尔需要裁剪,并不需要对图片做什么特别的处理,最近做了一个项目对于图片的需求功能比较多,踩了很多坑的同时也对图片的使用有了更深的理解,整理下…

C++面经:初始化全局变量和未初始化全局变量有什么区别

全局变量初始化而且初始值不为0,那么这样的全局变量是放在内存的.data段的,如果全局变量初始值为0或者未初始化,那么这样的全局变量是放在.bss段的。 考点: 考察C/C语言内存模型,.data,.bss段存放的内容。 …

Windows shell环境: 从git bash切换到msys2

文章目录 1. 目的2. msys2 环境 (Environment)3. 升级 MSYS2: 使用 pacman 滚动式升级整个系统4. 在 Windows Terminal 中增加显示 MSYS25. 使用 zsh6. VSCode 中的配置增加 MSYS2 终端配置 git 路径 7. 安装 C/C 依赖库安装 ag查询 bison 和 flex 的安装目录 8. References 1.…

ES6模块化规范

在没有ES6模块化规范前,有像AMD、CMD这样的浏览器模块化规范,还有像CommonJS这样的服务端模块化规范。 2015年,JS终于推出了官方的模块化规范,为了统一各种规范,我们简称ES6 模块化。 ES6目前作为JS的内置模块化系统&a…

Spring的创建和使用,存储和读取Bean总结

目录 Spring项目创建和使用流程 1.创建一个 Spring 项目 2.存储 Bean 3.读取 Bean ApplicationContext和BeanFactory的区别 通过注解存储 Bean对象 五大类注解的关系 Java程序标准分层 方法注解Bean 注入Bean对象的三种方式 1.属性注入 2.Setter注入 3.构造方法注入…

【Java数据结构】Map和Set

Map和Set 搜索树概念操作 - 查找操作 - 插入操作 - 删除cur没有左树(cur.left null)cur没有右树(cur.right null)cur既有左树也有右树(最困难的情况)替罪羊删除法 操作代码性能分析和 java 类集的关系 搜…

程序员困局:去大城市进大厂却买不了房,回老家又没有高薪工作…

对于在外打拼的程序员来说,难的是进大厂,而不是买不起房。 进大厂的程序员,能不能买得起房? 进大厂的程序员的薪资,还是相当可观的。以阿里P6为例,年薪50万,到手40万左右,刨去10万…

【C++学习】C++11——新特性 | 右值引用 | 完美转发

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! C11——新特性 | 右值引用 | 完美转发 👀列表初始化🦴 std::initializer_list…

收藏!网络行业主流的六大技术认证全科普

大家好,我是老杨。你的年终总结做完了没?还没做完,点击“年终总结”,拿个模板,快速完成。 很多人在年末都会有列一个新年愿望清单,写写来年想要完成的事情。 不少网工在这两年的就业环境之下,…

Nginx-部署2个vue项目(多个项目)-二级域名设置代理

前言 最近在实际开发过程中,需要在服务器部署2个项目。需要nginx二级域名。 开始时候在网上查了一圈,各有说法,不是很全,很头大。这里把自己成功的二级域名代理记录一下。 网上有很多文章说要该router.js文件,要该vu…

自动备份交换机的配置到远程服务器

环境 交换机配置修改后及时备份相关配置,每次配置变化后需要在1分钟后自动进行保存,并且将配置上传至FTP服务器;每隔30分钟,交换机自动把配置上传到FTP服务器 配置命令: [huawei]set save-configuration delay 1 //…

单片机外围电路:电阻之上下拉电阻

1.基础概念 上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理,也是将不确定的信号通过一个电阻钳位在低电平。 2.基础应用 上下拉电阻在数字电路中使用,为了好理解一点,可把上下拉电阻大致分为两种…