2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python数据驱动创建账号_0705-Python数据驱动之DDT

python数据驱动创建账号_0705-Python数据驱动之DDT

时间:2019-07-08 14:14:21

相关推荐

python数据驱动创建账号_0705-Python数据驱动之DDT

Python

Python开发

Python语言

0705-Python数据驱动之DDT

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]被分解开,按照用例中的两个参数传递,具体情况实例

importunittestfrom ddt importddt,data,unpack,file_data#data([a,b],[c,d])#如果没有@unpack,那么[a,b]当成一个参数传入用例运行

#如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递

@ddt#类装饰器

classMyTesting(unittest.TestCase):defsetUp(self):print('this is the setUp')

@data([1,2,3])#方法装饰器

deftest_1(self,value):print('value=',value)

@data([3,2,1],[5,3,2],[10,4,2])

@unpackdeftest_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])deftest_3(self,a,b):

self.assertEqual(a,b)

@data({'a':'first','b':'second'})

@unpackdeftest_4(self,a,b):print('test_4',a,b)

@file_data("test_data_list.json")#方法装饰器

deftest_5(self,value):print('test_5_file_data,value=',value)deftearDown(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):

[

"邓肯||蒂姆",

"乔丹||迈克尔",

"库里||斯蒂芬",

"杜兰特||凯文",

"詹姆斯||勒布朗"

]

内容来源于网络,如有侵权请联系客服删除

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。