首页 > 其他分享 >Unittest(9):unittest的第三方库paramunittest参数化基础及应用

Unittest(9):unittest的第三方库paramunittest参数化基础及应用

时间:2022-11-20 19:22:50浏览次数:40  
标签:__ Unittest self numa numb paramunittest unittest

一、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

相关文章