Python py.test终止,但不使用终端%

Python py.test终止,但不使用终端%,python,pytest,Python,Pytest,我是第一次使用pytest,大多数情况下它都很棒,但有时它只是终止而没有完成,没有错误消息 =========================================================================================== test session starts ============================================================================================

我是第一次使用pytest,大多数情况下它都很棒,但有时它只是终止而没有完成,没有错误消息

=========================================================================================== 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%

当我在发布这个问题的过程中,我发现了它,但是我在这里发布给其他有同样问题的人

问题在于,如果您的代码在
sys.stderr
sys.stdout
上意外调用了
close()
。这发生在我身上,因为我有一个日志函数,它试图通过
.name
属性将sys.stderr与其他文件句柄区分开来
py.test
控制
sys.stderr
并将其重新映射到
\u pytest.capture.EncodedFile
对象。因此,我的函数误解了它,并对该对象调用了
close()
。这导致提前终止,没有错误

我只是重写了代码以避免此问题,但另一种选择是从sys导入模块,然后在模块中测试“pytest”:

from sys import modules
if 'pytest' in modules:
    do something...
我有一个情况,我认为可能是这样,但我不知道如何解决它,以确定它是相同的问题。如果我正在测试其他人的代码,即我不想把所有代码都翻个底朝天,我怎么知道这是否会发生呢?记录在这里。