ddt
安装 pip install ddt
示例:
1 from ddt import ddt, data, unpack 2 import unittest 3 4 5 @ddt # ddt是用来装饰类的,需要与data装饰器一起使用 6 class test01(unittest.TestCase): 7 8 #1.单组数据 9 @data(1,2,3) 10 def test01(self, value): 11 print('value:',value) 12 self.assertTrue(value) 13 #1,2,3作为参数分别执行一次用例 14 15 #2.多组不分解元素 16 @data((1,2,3),('a','b','c')) 17 def test02(self, value): 18 print('value:',value) 19 self.assertTrue(value) 20 #(1,2,3)作为一组参数执行用例一次 , ('a','b','c')作为第2组参数,共执行test02 2次 21 22 #3.多组分解元素 23 @data((1,2,3),('a','b','c')) 24 @unpack #拆分元素,即将每一组数再次拆分为多个参数 25 def test03(self, value1, value2, value3): 26 print('value:{0}-{1}-{2}'.format(value1, value2, value3)) 27 self.assertTrue(value1) 28 #4 另一种形式 29 @data((4,5,6),('q','w','e')) 30 @unpack #拆分元素,即将每一组数再次拆分为多个参数 31 def test04(self, *value):# 32 #print(*value) 33 print('value:{0}+{1}+{2}'.format(*value)) 34 35 #5.列表中嵌套字典; 不分解 36 dic_list = [{'name':'lili','age':12},{'sex':'male','job':'teacher'}] 37 @data(dic_list) 38 def test05(self, l): 39 print('%s:%s'%(l[0], l[1])) 40 self.assertTrue(1) 41 #{'name': 'lili', 'age': 12}:{'sex': 'male', 'job': 'teacher'} 42 43 #6.列表中嵌套字典1 44 dic_list6 = [{'name':'lili','age':12},{'name':'mike','age':'15'}] 45 @data(*dic_list6)#将list拆分 46 def test06(self, d): 47 print("%s:%s"%(d['name'],d['age'])) 48 #print('%s:%s'%(d[0],d[1])) 49 self.assertTrue(1) 50 #分解list中的2个dic,作为参数,运行2次testcase 51 52 #7.列表中嵌套字典2 53 dic_list7 = [{'name':'lili2','age':12},{'name':'mike2','age':'15'}] 54 @data(*dic_list7) #1.将list拆分成多组 55 @unpack #2.将dic中的元素进一步拆分成多个参数 56 def test07(self, name, age):#参数名必须和传入的参数名一致 57 print("%s:%s"%(name,age)) 58 self.assertTrue(1) 59 #分解list中的2个dic,作为参数,运行2次testcase 60 61 62 63 64 if __name__ == '__main__': 65 unittest.main()
运行结果:
------------1.------------------
value: 1
value: 2
value: 3
--------------2.------------------
value: (1, 2, 3)
value: ('a', 'b', 'c')
--------------3.------------------
value:1-2-3
value:a-b-c
--------------4.------------------
value:4+5+6
value:q+w+e
--------------5.------------------
{'name': 'lili', 'age': 12}:{'sex': 'male', 'job': 'teacher'}
--------------6.------------------
lili:12
mike:15
--------------7.------------------
lili2:12
mike2:15
--------------end.------------------
ddt在与excel用例结合使用时,设置beautifulreport用例描述从excel中获取,可对ddt.py进行如下修改:
修改后@data(d)中 d 应该类似上面dic-list6的形式,并且存在存在 “title” 元素