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條是默認的樣式。