一、unittest参数化介绍
参数化测试用于当需要使用多组不同的测试数据测试同一个方法的时候
paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
实现unittest参数化的方式有多种,如ddt、paramunittest等

二、paramunittest模块安装
pip install paramunittest
三、示例
1、元组数据实现参数化
import unittest
import paramunittest # pip install paramunittest
# 参数化元组类型数据
@paramunittest.parametrized(
(20,30,50),
(30,40,70),
(60,80,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)
执行以上代码,测试结果如下:

2、列表数据实现参数化
import unittest
import paramunittest # pip install paramunittest
# 参数化列表类型数据
@paramunittest.parametrized(
[20,30,50],
[30,40,70],
[60,80,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)
执行以上代码,测试结果如下:

3、字典数据实现参数化
import unittest
import paramunittest # pip install paramunittest
# 参数化字典类型数据(字典中的key要和setParameters方法中的形参一致)
@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、参数通过函数或者数据对象传入实现参数化
import unittest
import paramunittest # pip install paramunittest
# # 参数化:数据对象
# testdata = [
# {"numa":20,"numb":30,"result":50},
# {"numa":30,"numb":40,"result":70},
# {"numa":60,"numb":80,"result":140}
# ]
# # 参数化类型数据
# @paramunittest.parametrized(
# *testdata
# )
# 参数化:函数
def get_data():
return [{"numa":20,"numb":30,"result":50},
{"numa":30,"numb":40,"result":70},
{"numa":60,"numb":80,"result":140}]
# 参数化类型数据
@paramunittest.parametrized(
*get_data()
)
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)
执行以上代码,测试结果如下:

616

被折叠的 条评论
为什么被折叠?



