ddt 数据驱动/参数化
1.什么是ddt
痛点:测试代码和测试数据耦合了,修改测试或者增加测试都需要修改代码。
DDT:DATA DRIVER TEST (数据驱动测试/参数化),是一个设计思想,不同的人有不同的理解。 它解决的问题:测试数据与测试用例代码分离,通过外部数据生成单元测试函数。
2.ddt 模块
ddt模块的原理:本质上就是一个装饰器,总共高就百来行代码。在创建类的时候,根据用例数据,动态的创建测试函数。
使用
-
从
ddt模块中导入from ddt import ddt, data两个装饰器 -
定义测试用例类时需要用
-
定义单元测试函数时,需要
-
ddt模块会自动的通过case1,case2,...在类里面创建 test_some_1,test_some_2,..单元测试函数
输出
ddt-data 数据
一组数据之间用逗号隔开
data的参数可以为如下几种
- 1.一组数据中,每个数据为单个值
- 2.一组数据中,每个数据为一个列表或者一个字典
- 3.文件对象:json,yaml
一组数据中的数据为列表或者字典:
@data([a,b],[c,d])
如何从以上数据中获取到字典中每一项值
@unpack
若变量A=[{a:b,a1:b1},{c:d,c1:d1}]
如何将变量A中的每一组元素作为测试数据
@ddt.data(*A)
包含知识点
@unpack :当传递的是复杂的数据结构时使用。比如使用元组或者列表,添加 @unpack 之后, ddt 会自动把元组或者列表对应到多个参数上。字典也可以这样处理
- 当没有加unpack时,test_case方法的参数只能填一个;
- 当你加了unpack时,传递的数据量需要一致;如列表例子中,每个列表我都固定传了2个数据,当你多传或少传时会报错,而test_case方法的参数也要写2个,需要匹配上
- 当传的数据是字典类型时,要注意每个字典的key都要一致,test_case的参数的命名也要一致;如字典的例子,两个字典的key都是value1和value2,而方法的参数也是
- 当传的数据是通过变量的方式,变量前需要加上*
列表
列表拆包
字典
元祖
包含字典的列表
传递json文件
dat-data数据
数据为文件对象:Json yaml
@ddt.file_data(jason文件路径) json格式里面必须为双引号“”,且必须为键值对,不存在纯列表格式,值作为测试数据
{"name":"nick","gender":"male","age":29}
JSON文件
单元测试类
传递YAML文件
YAML文件
单元测试类
3. unittestreport
这个也有ddt功能,使用方法同ddt
本文来自博客园,作者:测试玩家勇哥,转载请注明原文链接:https://www.cnblogs.com/Nephalem-262667641/articles/17302763.html

浙公网安备 33010602011771号