pytest使用裝飾器@pytest.mark.parametrize進行參數化后,在控制台或者測試報告中的測試用例標題都是以參數組合起來命名的,這樣的標題看起來不太直觀,我們想要展示我們自己定義的標題,這時候需要用到裝飾器@pytest.mark.parametrize參數化的另外一個參數ids來實現。
沒有使用ids之前:
# file_name: test_parametrize.py import pytest def return_user(): return [('lwjnicole', '12345'), ('nicole', '123111')] class Test_D: @pytest.mark.parametrize("username,password",return_user()) def test_login(self, username, password): print("username = {}, password = {}".format(username, password)) assert username == "lwjnicole" if __name__ == '__main__': pytest.main(['-s', 'test_parametrize.py'])
運行結果:
從結果中可以看到用例的標題是由所有參數組合而來的,這樣看起來不怎么直觀。
使用ids自定義測試用例標題:
# file_name: test_parametrize.py import pytest def return_user(): return [('lwjnicole', '12345'), ('nicole', '123111')] class Test_D: @pytest.mark.parametrize("username,password", return_user(), ids=[ "login success", "login fail" ]) def test_login(self, username, password): print("username = {}, password = {}".format(username, password)) assert username == "lwjnicole" if __name__ == '__main__': pytest.main(['-s', 'test_parametrize.py'])
運行結果:
從結果中可以看到用例的標題已經不再是各參數的組合了,而是我們在參數ids中定義的,這樣我們就實現了測試用例標題的自定義。