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

2024-05-08 03:09:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道pytest -s。不过,我想让钩子打印到控制台。你知道吗

以下内容对我不起作用:

terminal_reporter = request.config.pluginmanager.getplugin("terminalreporter")
terminal_reporter.write_line("TEST")

这仍然需要pytest -s才能运行。相反,我想回避这个问题。你知道吗

具体来说,我将覆盖pytest_bdd_before_scenario()钩子以打印正在执行的步骤。你知道吗


Tags: testconfigpytestrequestlinereporterbdd钩子
1条回答
网友
1楼 · 发布于 2024-05-08 03:09:58

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

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")

相关问题 更多 >