Python 如何在具有会话范围的pytestfixture中捕获stdout和stderr

Python 如何在具有会话范围的pytestfixture中捕获stdout和stderr,python,pytest,Python,Pytest,正如标题所说,我想问的是,当在会话范围的fixture中引发异常时,是否有任何方法可以捕获stdout和stderr?我现在得到的只是一个回溯,这是不够的,因为它没有通知我错误本身(真正的信息在stderr中)。我尝试使用capsys fixture,但它是函数范围的,所以这不是正确的方法。 我希望实现的是,我希望在发生错误时“提取”stdout和stderr,并引发泛型错误异常,该异常包含此输出以及有关失败的更多信息 我想象这样的情况: import pytest @pytest.fixtu

正如标题所说,我想问的是,当在会话范围的fixture中引发异常时,是否有任何方法可以捕获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,
                          ...
                          )

谢谢您的回答。

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


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