Python 如何让pytest钩子打印到控制台?

Python 如何让pytest钩子打印到控制台?,python,pytest,Python,Pytest,我知道关于pytest-s的。但是,我想让一个钩子打印到控制台 以下内容对我不起作用: terminal_reporter = request.config.pluginmanager.getplugin("terminalreporter") terminal_reporter.write_line("TEST") 这仍然需要pytest-s才能运行。相反,我想绕过这一点 具体来说,我正在覆盖pytest\u bdd\u before\u scenario()钩子以打印正在执行的步骤。对于不

我知道关于pytest-s的
。但是,我想让一个钩子打印到控制台

以下内容对我不起作用:

terminal_reporter = request.config.pluginmanager.getplugin("terminalreporter")
terminal_reporter.write_line("TEST")
这仍然需要
pytest-s
才能运行。相反,我想绕过这一点


具体来说,我正在覆盖
pytest\u bdd\u before\u scenario()
钩子以打印正在执行的步骤。

对于不涉及测试执行(配置、报告等)的钩子,使用terminal reporter编写应该可以。但是,一旦测试开始(并启用捕获),就会调用输出捕获机制,并且终端报告器不会出现异常。为了能够写入终端,您需要暂时禁用捕获。例如:

terminal_reporter = request.config.pluginmanager.get_plugin('terminalreporter')
capture_manager = request.config.pluginmanager.get_plugin('capturemanager')
with capture_manager.global_and_fixture_disabled():
    terminal_reporter.write("TEST")