參數化表達式: ddt表達式
@pytest.mark.parametrize(“參數名”, 列表數據) @ddt.ddt
def(參數名): class xxx(unittest.TestCase): #一定要繼承unitest.TestCase
執行體 @ddt.data(*LD.wrong_datas) #列表要解包
列表[“”] …… def test_login_failed_by_wrongData(self, case): #參數接收列表中的一條數據 參數名隨意
執行體
列表[“”] ……
pytest中的參數化的解釋:
參數名:用來接收列表中的每一組數據,並作為測試用例的參數,所以用例方法中用來接收每一組數據的參數名要和此處相同。
Eg:
@pytest.mark.parametrize('case', LD.wrong_datas)
def test_login_failed_by_wrongData(self, case):
self.lp.login(case["user"], case["passwd"])
self.assertEqual(case["check"], self.lp.get_error_msg())
備注:LD文件中wrong_datas = [
{"user": "", "passwd": "python", "check": "請輸入手機號"},
{"user": "18684720553", "passwd": "", "check": "請輸入密碼"},
{"user": "186847205", "passwd": "python", "check": "請輸入正確的手機號"}
]
常用場景:一般都是把數據放到字典中,多組數據一起放到列表中,再通過Pytest參數化實現數據驅動。
了解下:參數名中可包括多個參數,可進一步把每組接收到的數據再次解包 一一賦值。(高級用法 但用得少 一般還是列表中數據格式為字典就可替代這種用法)
騷操作 迪卡爾積-了解下即可 很少用到