一、unittest参数化介绍
参数化测试用于当需要使用多组不同的测试数据测试同一个方法的时候
paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
实现unittest参数化的方式有多种,如ddt、paramunittest等
二、paramunittest模块安装
pip install paramunittest
三、示例
1、元组数据实现参数化
1 import unittest 2 3 4 import paramunittest #p ip install paramunittest 5 6 7 8 # 参数化元组类型数据 9 @paramunittest.parametrized( 10 (20,30,50), 11 (30,40,70), 12 (60,80,140) 13 ) 14 15 16 class TestDemo(paramunittest.ParametrizedTestCase): 17 18 def setParameters(self, numa,numb,numc): # 把参数化传递到测试类中 19 self.a = numa 20 self.b = numb 21 self.c = numc 22 23 def test_add_case(self): 24 print("%d+%d=%d" % (self.a,self.b,self.c) ) 25 self.assertEqual(self.a+self.b, self.c) 26 27 28 if __name__ == '__main__': 29 unittest.main(verbosity=2)
执行以上代码,测试结果如下:
2、列表数据实现参数化
1 import unittest 2 import paramunittest #p ip install paramunittest 3 4 5 6 # 参数化列表类型数据 7 @paramunittest.parametrized( 8 [20,30,50], 9 [30,40,70], 10 [60,80,140] 11 ) 12 13 14 class TestDemo(paramunittest.ParametrizedTestCase): 15 16 def setParameters(self, numa,numb,numc): # 把参数化传递到测试类中 17 self.a = numa 18 self.b = numb 19 self.c = numc 20 21 def test_add_case(self): 22 print("%d+%d=%d" % (self.a,self.b,self.c) ) 23 self.assertEqual(self.a+self.b, self.c) 24 25 26 if __name__ == '__main__': 27 unittest.main(verbosity=2)
执行以上代码,测试结果如下:
3、字典数据实现参数化
import unittest import paramunittest #p ip install paramunittest # 参数化字典类型数据 @paramunittest.parametrized( {"numa":20,"numb":30,"result":50}, {"numa":30,"numb":40,"result":70}, {"numa":60,"numb":80,"result":140} ) class TestDemo(paramunittest.ParametrizedTestCase): def setParameters(self, numa,numb,result): # 把参数化传递到测试类中 self.a = numa self.b = numb self.c = result def test_add_case(self): print("%d+%d=%d" % (self.a,self.b,self.c) ) self.assertEqual(self.a+self.b, self.c) if __name__ == '__main__': unittest.main(verbosity=2)
执行以上代码,测试结果如下:
4、参数通过函数或者数据对象传入实现参数化
1 import unittest 2 import paramunittest #p ip install paramunittest 3 4 # # 参数化:数据对象 5 # testdata = [ 6 # {"numa":20,"numb":30,"result":50}, 7 # {"numa":30,"numb":40,"result":70}, 8 # {"numa":60,"numb":80,"result":140} 9 # ] 10 11 # 参数化:函数 12 def get_data(): 13 return [{"numa":20,"numb":30,"result":50}, 14 {"numa":30,"numb":40,"result":70}, 15 {"numa":60,"numb":80,"result":140}] 16 # 参数化函数 17 @paramunittest.parametrized( 18 *get_data() 19 ) 20 21 22 class TestDemo(paramunittest.ParametrizedTestCase): 23 24 def setParameters(self, numa,numb,result): # 把参数化传递到测试类中 25 self.a = numa 26 self.b = numb 27 self.c = result 28 29 def test_add_case(self): 30 print("%d+%d=%d" % (self.a,self.b,self.c) ) 31 self.assertEqual(self.a+self.b, self.c) 32 33 34 if __name__ == '__main__': 35 unittest.main(verbosity=2)
执行以上代码,测试结果如下:
标签:__,Unittest,self,numa,numb,paramunittest,unittest From: https://www.cnblogs.com/YouJeffrey/p/16909253.html