Python 在收集期间,如何在测试函数之外的pytest中访问捕获的stdout/stderr?

Python 在收集期间,如何在测试函数之外的pytest中访问捕获的stdout/stderr?,python,pytest,stdout,Python,Pytest,Stdout,我有以下关于pytest的特殊问题。在收集过程中,stdout中充满了许多无用的、可能是敏感的信息(在下面的示例中,由print(1)抽象)。因此,我不希望这些信息显示在pytest的“Captured stdout”输出中,以防在收集过程中发生错误(在下面的示例中是aZeroDivisionError)。但是,stdout中也有有用的信息(在下面的示例中由print(2)抽象)。所以我的想法是在两者之间访问stdout 在测试函数中,我可以使用capsysfixture访问捕获的标准输出,如p

我有以下关于pytest的特殊问题。在收集过程中,stdout中充满了许多无用的、可能是敏感的信息(在下面的示例中,由
print(1)
抽象)。因此,我不希望这些信息显示在pytest的“Captured stdout”输出中,以防在收集过程中发生错误(在下面的示例中是a
ZeroDivisionError
)。但是,stdout中也有有用的信息(在下面的示例中由
print(2)
抽象)。所以我的想法是在两者之间访问stdout

在测试函数中,我可以使用
capsys
fixture访问捕获的标准输出,如pytest文档中所述。在收集过程中,在测试函数之外的情况下,我可以使用什么

示例
test.py
,即使没有任何实际的测试功能:

打印(1)
#在这里访问stdout
印刷品(2)
1/0#任意错误
调用pytest:

$ python3 -m pytest test.py 
============================= test session starts ==============================
platform linux -- Python 3.6.7, pytest-4.5.0, py-1.8.0, pluggy-0.11.0
rootdir: /home/user/Documents
collected 0 items / 1 errors                                                   

==================================== ERRORS ====================================
___________________________ ERROR collecting test.py ___________________________
test.py:4: in <module>
    1/0
E   ZeroDivisionError: division by zero
------------------------------- Captured stdout --------------------------------
1
2
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.07 seconds ============================
$python3-m pytest.py
===========================================测试会话开始==============================
平台linux——Python 3.6.7、pytest-4.5.0、py-1.8.0、pluggy-0.11.0
rootdir:/home/user/Documents
已收集0项/1个错误
===================================================错误====================================
___________________________收集test.py时出错___________________________
测试。py:4:in
1/0
E零除误差:被零除
-------------------------------俘获stdout--------------------------------
1.
2.
!!!!!!!!!!!!!!!!!!! 中断:收集过程中出现1个错误!!!!!!!!!!!!!!!!!!!!
===========================================0.07秒内出现1个错误============================

如您所见,捕获了
1
2
。我想清除中间的stdout,因此只显示
2
。我的意思是,捕获的stdout必须由pytest存储在某个地方,对吗?我只是不知道如何访问它,如何清除它。

您能否描述一下,通过清除特定打印功能的输出,您试图实现什么?这是您要求的一件奇怪的事情,我怀疑有很多有效的用例。输出中出现
1
有什么不好的地方?@mario_sunny编辑了这个问题。试试这些怎么样?你能随意处理或保留它吗?