20190705-Python数据驱动之DDT
2019-07-24 09:15:28来源:博客园 阅读 ()
DDT
ddt 是第三方模块,需安装, pip install ddt
DDT包含的装饰器
包含一个类装饰器@ddt和两个方法装饰器@data和@file_data
通常情况下,@data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。
@data([a,b],[c,d])
那么[a,b]和[c,d]各运行一次用例
@data([a,b],[c,d])
如果没有@unpack,那么[a,b]当成一个参数传入用例运行
如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递,具体情况实例
import unittest from ddt import ddt,data,unpack,file_data #data([a,b],[c,d]) #如果没有@unpack,那么[a,b]当成一个参数传入用例运行 #如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递 @ddt#类装饰器 class MyTesting(unittest.TestCase): def setUp(self): print('this is the setUp') @data([1,2,3])#方法装饰器 def test_1(self,value): print('value=',value) @data([3,2,1],[5,3,2],[10,4,2]) @unpack def test_2(self,a,b,c): print('a=%s,b=%s,expected=%s'%(a,b,c)) actual = int(a) - int(b) expected = int(c) self.assertEqual(actual, expected) @data([2,3],[4,5]) def test_3(self,a,b): self.assertEqual(a,b) @data({'a':'first','b':'second'}) @unpack def test_4(self,a,b): print('test_4',a,b) @file_data("test_data_list.json")#方法装饰器 def test_5(self,value): print('test_5_file_data,value=',value) def tearDown(self): print('this is tearDown') if __name__ == '__main__': unittest.main(verbosity=2)
执行分析
test_1
- 执行次数:1次
- 参数值:value=[1,2,3]
- 执行结果:pass
test_2
- 执行次数:3次
- 参数值:第一轮a=3,b=2,c=1;第二轮a=5,b=3,c=2;第三轮a=10,b=4,c=2
- 执行结果:第一轮、第二轮通过,第三轮失败FAIL
- 失败原因:self.assertEqual(a-b = c)失败
test_3
- 执行次数:2次
- 参数值:第一轮a=[2,3];第二轮a=[4,5]
- 执行结果:执行错误ERROR
- 失败原因:缺少参数b
i. 由于没有加@unpack, 虽然还是会被理解成2组测试数据,但是[2,3]作为一个整体被传给了a, 因为b就没有值传入了,所以一执行后报了 TypeError: test_compare() missing 1 required positional argument: 'b' 这句错
test_4
- 执行次数:1次
- 参数值:a = first,b=second
- 执行结果:pass
test_5
- 执行次数:test_data_list.json文件里面的数据数
- 参数值:每次value = test_data_list.json里面的一条数据
- 执行结果:pass
@data里面的数据格式
@data里面的数据可以是字典,列表,字典(注意字典的key值一定要跟参数名对应)
Json文件创建内容参考如下(tip,将文件的后缀名改为.json):
[
"邓肯||蒂姆",
"乔丹||迈克尔",
"库里||斯蒂芬",
"杜兰特||凯文",
"詹姆斯||勒布朗"
]
原文参考:https://www.cnblogs.com/nancyzhu/p/8563884.html
原文链接:https://www.cnblogs.com/hyj691001/p/11138339.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python_0基础开始_day07 2019-08-13
- Django和前端用ajax传输json等数据 2019-08-13
- 链接 Mysql 创建 数据库和创表,增加数据 2019-08-13
- Python数据基础类型-列表 2019-08-13
- JavaScript获取Django模板中指定键值的数据,使用过滤器 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash