unittest 如何做参数化呢?
我们在写 case 的时候如果就是参数不同, 我们只需要把参数都写到一个 list 里面, 然后循环去执行这个 case 即可.
unittest 中有一个模块 parameterized, 可以帮我们循环, 不需要自己写循环, 直接 pip install parameterized 安装即可.
例如: 一个登陆的 case
- import parameterized
- import unittest,BeautifulReport
- data = [
- ['admin','123456',True], #第三列表示预期结果
- ['admin','1122',False],
- ['sdfsdf','1111',False]
- ]
- data1 = [
- ['admin','123456',True,'正常登陆'], #第四列表示描述
- ['admin','1122',False,'冻结用户登陆'],
- ['sdfsdf','1111',False,'黑名单用户登陆']
- ]
- def login(user,password):
- if user=='admin' and password=='123456':
- return True
- return False
- class LoginTest(unittest.TestCase):
- @parameterized.parameterized.expand(data)
- def test_login(self,user,password,expect):
- '''登陆''' # 加上'''在测试报告中会显示用例描述
- result=login(user,password)
- self.assertEqual(expect,result)
- @parameterized.parameterized.expand(data1)
- def test_login1(self,user,password,expect,desc):
- self._testMethodDoc=desc #自己指定用例描述的展示样子
- result=login(user,password)
- self.assertEqual(expect,result)
- bf=BeautifulReport.BeautifulReport(unittest.makeSuite(LoginTest))
- bf.report(filename='11-17 测试报告',description='接口测试报告')
结果: 展示了 2 种用例描述的样式, 其中 123 条是指定的用例描述, 456 条是默认的样式.
来源: http://www.bubuko.com/infodetail-3297018.html