參數化,就是將測試數據提取出來,與邏輯分離,通過參數傳遞不同的測試數據來驅動用例運行,又稱為數據驅動測試(Data-Drive test,簡寫ddt)。
比如,有一組測試注冊的測試用例,它們的測試流程相同,只是輸入的測試數據不同,這種情況下,自動化測試就可以將數據與代碼分離,只編寫1個測試用例方法,以后增加測試用例或者修改測試用例,只需要修改數據,不需要修改測試邏輯。
pytest通過 @pytest.mark.parametrize()即可實現參數化(測試函數中必須有參數)
一、測試函數參數化
1、單個參數
@pytest.mark.parametrize()中接收2個參數,第1個參數用字符串的形式標記要傳遞給測試函數的參數名稱,注意,名稱與測試函數中的參數名稱必須一致,第2個參數表示要傳遞的測試數據(通常以元祖或列表的形式)。
2、多個參數
多個參數,@pytest.mark.parametrize()中仍傳入2個參數,第1個參數用一個字符串標識要傳遞的參數名稱,字符串用英文,分割,注意,名稱和數量必須和測試函數中的參數一致,第2個參數表示要傳遞的測試數據(通常以二維列表或原則表示)。
二、測試類參數化
測試類參數化,在類上面加@pytest.mark.parametrize()裝飾器,實際上,也是對測試類中的方法進行參數化。可以傳入單個參數或多個參數,類中的所有測試方法中的參數名稱和個數(測試方法中必須使用參數),必須與@pytest.mark.parametrize()中標識的參數一致。