正如标题所说,我问当会话范围的装置中出现异常时,是否有任何方法可以捕获 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/