参数化测试用于当需要使用多组不同的测试数据测试同一个方法的时候
paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
实现unittest参数化的方式有多种,如ddt、paramunittest等
pip install paramunittest
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)
执行以上代码,测试结果如下:
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)
执行以上代码,测试结果如下:
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)
执行以上代码,测试结果如下:
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)
执行以上代码,测试结果如下:
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!!