如何在收集阶段从 pytest 插件写入控制台?
How do I write to the console from a pytest plugin during the collection phase?
我正在编写一个 pytest 插件,它需要警告用户在收集阶段遇到的异常情况,但我没有找到任何方法从我的 pytest_generate_tests
函数中始终如一地将输出发送到控制台.
来自 print
和 logging
模块的输出仅在添加 -s
选项时出现在控制台中。我找到的所有与日志记录相关的文档都是指在测试中记录日志,而不是在插件中。
最后,我使用了 pytest-warning 基础设施,方法是使用 pytest config
对象的未记录的 _warn()
方法传递给或无论如何都可以从各种挂钩访问。例如:
def pytest_generate_tests(metafunc):
[...]
if warning_condition:
metafunc.config._warn("Warning condition encountered.")
[...]
如果报告了任何内容,您可以通过这种方式在 one-line 摘要中获得额外的 pytest-warnings
,并且您可以通过向 pytest
命令添加“-r w”选项来查看警告详细信息行。
我正在编写一个 pytest 插件,它需要警告用户在收集阶段遇到的异常情况,但我没有找到任何方法从我的 pytest_generate_tests
函数中始终如一地将输出发送到控制台.
来自 print
和 logging
模块的输出仅在添加 -s
选项时出现在控制台中。我找到的所有与日志记录相关的文档都是指在测试中记录日志,而不是在插件中。
最后,我使用了 pytest-warning 基础设施,方法是使用 pytest config
对象的未记录的 _warn()
方法传递给或无论如何都可以从各种挂钩访问。例如:
def pytest_generate_tests(metafunc):
[...]
if warning_condition:
metafunc.config._warn("Warning condition encountered.")
[...]
如果报告了任何内容,您可以通过这种方式在 one-line 摘要中获得额外的 pytest-warnings
,并且您可以通过向 pytest
命令添加“-r w”选项来查看警告详细信息行。