2016-10-06 65 views
1

我有一個測試,使用requests並需要一個活動連接。pytest:xfail在給定的例外情況下,否則通過

如果連接斷開但我想以xfail爲準,否則正常通過。

這裏是我的嘗試:

from requests import ConnectionError 

@pytest.mark.xfail(raises=ConnectionError) 
class TestStuff(): 
    def test_stuff(): 
     do stuff 

這確實會xfail如果連接已中斷在一般情況下,但它xpass ES。

有什麼辦法可以實現我想要的嗎?

我可以用一個try /除外:

from requests import ConnectionError 

class TestStuff(): 

    def test_stuff(): 
     try: 
      do stuff 
     except ConnectionError: 
      pass 

,但我沒有得到任何xfail。測試總是通過,但我沒有通知它無法正常執行。

我想xfail是爲了系統性錯誤,可能有一天會被修復(破碎的lib,...),而不是像連接錯誤那樣的瞬態錯誤。

回答

2

調用xfailConnectionError被抓是一個解決方案。

檢查夾具中的連接甚至更好(同樣的方法 - 嘗試 - 除了pytest.xfail),並在需要連接的所有測試中使用該夾具。

這樣的夾具將導致所有依賴測試xfail甚至沒有運行它們。

+0

好點。雖然在夾具測試期間連接可能會斷開,但在測試期間會斷開(好的,不太可能......)。或者連接可能啓動,但服務(根據運行哪個測試而不同)無法訪問。 –

相關問題