欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  DDT
 
  ddt是第三方模块,需安装,pipinstallddt
 
  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]被分解开,按照用例中的两个参数传递,具体情况实例
 
  importunittest
 
  fromddtimportddt,data,unpack,file_data
 
  #data([a,b],[c,d])
 
  #如果没有@unpack,那么[a,b]当成一个参数传入用例运行
 
  #如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递
 
  @ddt#类装饰器
 
  classMyTesting(unittest.TestCase):
 
  defsetUp(self):
 
  print('thisisthesetUp')
 
  @data([1,2,3])#方法装饰器
 
  deftest_1(self,value):
 
  print('value=',value)
 
  @data([3,2,1],[5,3,2],[10,4,2])
 
  @unpack
 
  deftest_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'})
 
  @unpack
 
  deftest_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('thisistearDown')
 
  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()missing1requiredpositionalargument:'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):
 
  [
 
  "邓肯||蒂姆",
 
  "乔丹||迈克尔",
 
  "库里||斯蒂芬",
 
  "杜兰特||凯文",
 
  "詹姆斯||勒布朗"
 
  ]

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h54737.shtml