我有一些python代碼和一堆pytest測試。爲什麼py.test將我的xfail測試顯示爲跳過?
有些我想到失敗(即我測試錯誤處理,所以我通過這應該引起我的代碼拋出異常投入。)
爲了做到這一點的測試,我有一些代碼像這樣:
CF_TESTDATA =[('data/1_input.csv', 'data/1_input.csv', 'utf-8'),
pytest.mark.xfail(('data/1_input_unknown_encoding.txt', '', 'utf-8')),
('data/1_input_macintosh.txt', 'data/1_converted_macroman.csv', 'macroman')]
@pytest.mark.parametrize('input_file, expected_output, encoding', CF_TESTDATA)
def test_convert_file(testdir, tmpdir, input_file, expected_output, encoding):
'''
Test the function that converts a file to UTF-8.
'''
...
這裏的想法是,本次測試的第二輪,與INPUT_FILE =「數據/ 1_input_unknown_encoding.txt」,我希望被測代碼失敗。
這似乎工作正常,並且當我從命令行運行時,pytest告訴我測試xfailed。我可以按照調試器中的代碼看到它拋出了預期的異常。所以這一切都很好。
但詹金斯顯示這項測試爲skkipped。當我看到輸出時,我看到消息:
Skip Message
expected test failure
爲什麼測試顯示爲跳過?這似乎是測試運行,並按預期失敗。這與正在跳過的測試不同。
當你從詹金斯跑,你從相同的當前目錄運行它作爲交互式運行? –
我猜Jenkins讀取JUnitXML輸出?我猜JUnitXML根本沒有辦法說xfail,所以pytest使用skip。但我其實並不知道。 –