ddt的用法:根据数据来生成测试用例
2020-08-10 12:03
84 查看
今天,接上上一篇的的内容,继续讲解单元测试,我们在用python代码通过函数的方法来写测试用例,确实可以,但是这些方法中,很多代码量是重复的,有没有简捷化的处理呢?有,ddt就是一个很好用的工具,那么什么是ddt呢?
ddt:英文全称为 data driver tsest 中文意思:数据驱动用例 我们在实际的工作中来运用,就是根据数据来生成测试用例,至于这个ddt怎么用,且听我慢慢道来,一学就会,很容易上手。
先看我昨天自己写的一个测试用例类,一个类里面写了10个方法,每个方法都代表着一个用例,但是,很多都是重复的,怎么办?
可以利用ddt来处理,不需要重复写这么多代码,只需要把数据放在外面,在方法里面调用就行
1、首先安装ddt
2、代码中导入ddt
import unittest import ddt from day_14.task_day13.register import register_check case_data = [ {"expected": {"code": 1, "msg": "注册成功"}, "data": {'username': 'python999', 'password1': '123456789', 'password2': '123456789'}}, {"expected": {"code": 0, "msg": "该账户已存在"}, "data": {'username': 'python31', 'password1': '123456', 'password2': '123456'}}, {"expected": {"code": 0, "msg": "两次密码不一致"}, "data": {'username': 'python111', 'password1': '12377', 'password2': '123456789'}} ] @ddt.ddt class TestRegister(unittest.TestCase): """注册的测试用例类""" @ddt.data(*case_data) def test_register(self, item): # 第一步:准备用例数据 expected = item["expected"] data = item["data"] # 第二步:传入参数 res = register_check(**data) # 拆包,字典拆包是两个*号,列表和元组拆包是一个*号 # 第三步:比对预期结果和实际结果(断言) self.assertEqual(expected, res) if __name__ == '__man__': unittest.main()
对以上代码,进行截图解析
关于那个case_data,它其实就是一个列表,用来装数据的列表,
运行后的结果截图:
那么有的同学会问,既然你前面提到了,那么如果要执行100条或者1000条用例,怎么办,也是case_data=[ ],里面写100个或者1000个?
可以用循环:
# @ddt.data(1, 2, 3, 4) # 传了4个参数,就生成4条用例
# li = list(range(1, 100)) # 生成99条用例 # @ddt.data(*li)
所以,ddt用起来很方便,就那么关键几步,所以,一学就会
相关文章推荐
- Postman安装、基本操作、高级用法(用例管理、断言、全局/环境变量、请求前置脚本、参数关联、批量执行测试用例、引入外部数据文件、postman生成测试报
- ddt模块封装测试数据,生成HTML测试报告
- 生成测试数据-2-T-SQl系列 RAND( ) 的一般用法
- 根据测试用例的java源码自动生成TestNG的XML文件
- Python数据驱动ddt模块,与测试报告的生成
- Oracle dbms_random函数用法快速生成多条测试数据
- Python测试用例生成脚本(合并相应单元格以及写入单行数据)代码实例
- 根据测试用例的java源码自动生成TestNG的XML文件
- Python测试用例生成脚本(合并相应单元格以及写入单行数据)代码实例
- 根据测试用例的java源码自动生成TestNG的XML文件
- [转]Oracle dbms_random函数用法快速生成多条测试数据
- 用VBA在excel表中自动化生成测试用例数据(异常)
- 最小生成树 POJ——Truck History(没看懂题,直接根据测试用例YY的,我的Kusal 写法复习)
- 爬虫测试之无法爬取js动态生成的元素数据
- Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
- Python Unittest - 根据不同测试环境跳过用例详解
- (转载)根据数据字典表定义的表结构,生成创建表的SQL语句
- Android 测试、数据存储与访问、XML解析与生成
- 根据城市表生成json数据
- powerDesigner中怎样生成自动增加列的测试数据