我了解pytest -s
。但是,我想让一个钩子(Hook)打印到控制台。
以下内容对我不起作用:
terminal_reporter = request.config.pluginmanager.getplugin("terminalreporter")
terminal_reporter.write_line("TEST")
这仍然需要 pytest -s
才能运行。相反,我想避免这种情况。
具体来说,我将覆盖 pytest_bdd_before_scenario()
Hook 来打印正在执行的步骤。
最佳答案
对于不参与测试执行(配置、报告等)的钩子(Hook),使用终端报告器编写应该可以工作。但是,一旦测试开始(并启用捕获),就会调用输出捕获机制,并且终端报告器也不异常(exception)。为了能够写入终端,您需要暂时禁用捕获。示例:
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")
关于python - 如何让 pytest hooks 打印到控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57201523/