python - 如何让 pytest hooks 打印到控制台?

标签 python pytest

我了解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/

相关文章:

python - Tkinter 中的保存文件对话框

python - 当输入要求整数时,“ENTER”键在 python 中带来错误

python - 拆分字符串并删除空格 Python

python - 为什么 pytest 一旦单元测试(@pytest.mark.timeout(3))超时就退出?

python - Django 测试客户端与 django-pytest

python - 调用 Tornado 服务器时保持 ajax 调用处于事件状态

Python - 我无法理解这个错误

python - 在 docker 容器中作为服务运行 py.test

ruby - Rspec 限制方法的重用

python - 在虚拟文件结构中测试我的代码