我们在写case的时候,如果用例的操作是一样的,就是参数不同,比如说要测一个登陆的接口,要测正常登陆的、黑名单用户登陆的、账号密码错误的等等,在unittest里面就要写多个case来测试。
这样的情况只是调用接口的时候参数不一样而已,再写多个case的话就有点多余了,那怎么办呢,就得把这些参数都写到一个list里面, 然后循环去执行这个case。这样就可以省去写多个case了。
当然有个第三方模块就直接有这样的功能,不需要咱们再自己写循环了。那就是nose-parameterized,直接pip安装即可。
1
|
pip install nose-parameterized
|
'''
unittest参数化
'''
import unittest
import nose_parameterized
def calc(a,b):
res=round(a/b,2)
print(res)
return res
case_data = [
[1,1,1.00],
[1,0,0],
[0.5,1,0.50],
[1,2,0.50],
[1,3,0.33],
[1,4,0.25]
]
class MyTest(unittest.TestCase):
@nose_parameterized.parameterized.expand(case_data)
def test_func(self,a,b,e):
res =calc(a,b)
self.assertEqual(res,e)
if __name__ == '__main__':
unittest.main()
执行结果: