TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
ddt 结合单元测试一起用
ddt(data.driven.test):数据驱动测试
由外部数据集合来驱动测试用例
核心的思想:数据和测试代码分离
应用场景:一组数据来执行相同的操作
当测试数据发生大量变化的情况下测试代码,(或者说测试用例)可以保持不变
excel存储测试数据,ddt读取测试数据到 单元测试框架(测试用例中)-输出到HTML报告
python.ddt框架
安装:pip install ddt
使用之前先导入ddt
import ddt
ddt结合单元测试来使用
1.在测试类定义定义之前使用:@ddt.ddt
2.在测试用例定义之前使用,@ddt.data(测试数据) 测试数据之间用逗号隔开
3.在2的基础上定义测试用例时,参数接收2中的测试数据
例:
@ddt.ddt
class Demo Test(unittest.TestCase):
@ddt.data(2,3,4)
def test_print(self,a)
print("简单调用@data查看输出的是什么?",a)
例子
import ddt
import unittest
@ddt.ddt
class test_PersonInfo(unittest.TestCase):
@claSSMethod
def setUp(self):
print("==========开始测试==========")
@classmethod
def tearDown(self):
print("==========结束测试==========")
@ddt.data(1,2,3,4)
def test_print(self,a):
print(a)
ddt-data 数据
一组数据之间用逗号隔开
data的参数可以为如下几种
1.一组数据中,每个数据为单个值
2.一组数据中,每个数据为一个列表或者一个字典
3.文件对象:jason,yaml
一组数据中的数据为列表或者字典:
@data([a,b],[c,d])
如何从以上数据中获取到字典中每一项值
@unpack
若变量A=[{a:b,a1:b1},{c:d,c1:d1}]
如何将变量A中的每一组元素作为测试数据
@ddt.data(*A)
import ddt
import unittest
@ddt.ddt
class test_PersonInfo(unittest.TestCase):
@classmethod
def setUp(self):
print("==========开始测试==========")
@classmethod
def tearDown(self):
print("==========结束测试==========")
@ddt.data([1,2],[3,4])
def test_print(self,a):
print(a)
==========开始测试==========
[1, 2]
==========结束测试==========
==========开始测试==========
[3, 4]
==========结束测试==========
print(a[0])
==========开始测试==========
1
==========结束测试==========
==========开始测试==========
3
==========结束测试==========
@ddt.data([1,2],[3,4])
@ddt.unpack
def test_print(self,a,b):
print(a,b)
==========开始测试==========
1 2
==========结束测试==========
==========开始测试==========
3 4
==========结束测试==========
@ddt.data([{"a":2,"b":3},{"c":4,"d":8},{"e":5,"f":7}])
def test_print(self,a):
print(a)
==========开始测试==========
[{"a": 2, "b": 3}, {"c": 4, "d": 8}, {"e": 5, "f": 7}]
==========结束测试==========
@ddt.data(*datas)
def test_print(self,datas):
print(datas)
==========开始测试==========
{"class": "python2", "name": "xiaoshitou", "id": "0001", "sex": "male"}
==========结束测试==========
==========开始测试==========
{"class": "python2", "name": "nuonuo", "id": "0002", "sex": "female"}
==========结束测试==========
==========开始测试==========
{"class": "python2", "name": "fly", "id": "0003", "sex": "male"}
==========结束测试==========
==========开始测试==========
{"class": "python2", "name": "haiyang", "id": "0004", "sex": "male"}
==========结束测试==========
==========开始测试==========
{"class": "python2", "name": "shuangshuang", "id": "0005", "sex": "female"}
==========结束测试==========
dat-data数据
数据为文件对象:Json yaml
json格式里面必须为双引号“”,且必须为键值对,不存在纯列表格式,值作为测试数据
{"name":"nick","gender":"male","age":29}
@ddt.file_data(jason文件路径)
@ddt.file_data(os.getcwd()+"/test.json")
def test_json(self,data):
print(data)
==========开始测试==========
[1, 2, 3]
==========结束测试==========
==========开始测试==========
python2
==========结束测试==========
==========开始测试==========
male
==========结束测试==========
==========开始测试==========
xiaoshitou
==========结束测试==========
==========开始测试==========
0001
==========结束测试==========
|
|