2016-01-17 91 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...