如标题所示,我问在会话范围的夹具中引发异常时是否有任何方法可以捕获stdout和stderr?我现在得到的只是一个追溯,这是不够的,因为它没有告诉我有关错误本身(真正的信息是在stderr)。我试图使用capsys fixture,但它的功能范围,所以这不是正确的方法。 我希望实现的是,我想在发生错误时'提取'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,
...
)
感谢您的回答。
答案 0 :(得分:0)
我使用cStringIO模块中的StringIO找到了解决方案。