2016-01-17 125 views
1

我第一次使用pytest,主要是它很好,但有時它只是終止沒有完成,沒有錯誤信息。py.test終止沒有完成與終端%

=========================================================================================== test session starts ============================================================================================ 
platform darwin -- Python 3.5.1, pytest-2.8.5, py-1.4.31, pluggy-0.3.1 
rootdir: /Users/dacre/mike_tools/python, inifile: 
collected 7 items 

test_pipeline.py ......F% 
+0

我有我*覺得情況*可能是這個,但我不知道如何解決它,以確定它是同樣的問題。如果我測試別人的代碼,我怎麼能知道這是否會發生?也就是說,我寧願不必深入研究其中的所有內容? [Excruciating detail](https://markdownshare.com/view/21a0a63c-66bf-4fa5-91d1-7d3d0c283bc7)記錄在這裏。 – Philip

回答

1

雖然我在發佈這個問題的過程中,我想出了它,但我在這裏發佈它爲其他任何人有同樣的問題。

問題是如果您的代碼意外地調用close()sys.stderrsys.stdout。這發生在我身上,因爲我有一個日誌記錄功能,試圖通過.name屬性區分sys.stderr與其他文件句柄。 py.test取得sys.stderr的控制權並將其重新映射到_pytest.capture.EncodedFile對象。我的功能因此誤解了它,並在該對象上調用了close()。這導致過早終止而沒有錯誤。

我只是改寫了我的代碼來避免這個問題,但另一種選擇是從SYS導入模塊,然後測試模塊「pytest」:

from sys import modules 
if 'pytest' in modules: 
    do something...