如何在具有会话范围的pytest夹具中捕获标准输出和标准



正如标题所说,我问当会话范围的装置中出现异常时,是否有任何方法可以捕获 stdout 和 stderr?我现在得到的只是一个回溯,这还不够,因为它不会通知我错误本身(真实信息在 stderr 中(。我尝试使用capsys夹具,但它是函数范围的,所以这不是正确的方法。 我希望实现的是,我想在发生错误时"提取"stdout 和 stderr,并引发通用错误异常,其中包含此输出以及有关失败的更多信息。

我想象的是这样的:

import pytest 
@pytest.fixture(scope='session')
def session_fixture(request):
try:
# Critical part, which produces stdout/stderr output
except Error as exc:
# Extract stdout and stderr
out, err = ...
raise CustomError(stdout=out,
stderr=err,
...
)

谢谢你的任何回答。

我已经从cStringIO模块中使用StringIO找到了解决方案。

http://kitchingroup.cheme.cmu.edu/blog/2013/09/27/Capturing-stderr-and-exceptions-from-python-in-org-mode/

最新更新