1 回答
TA贡献1813条经验 获得超2个赞
该conftest插件将在两次调用中注册,唯一的区别是注册阶段。如果有疑问,请添加--traceconfig参数以按注册顺序列出已注册的插件:
$ pytest --traceconfig
PLUGIN registered: <_pytest.config.PytestPluginManager object at 0x7f23033ff100>
PLUGIN registered: <_pytest.config.Config object at 0x7f2302d184c0>
...
=================================== test session starts ===================================
...
PLUGIN registered: <module 'conftest' from 'path/to/conftest.py'>
...
在第一次调用中,conftest.py不会立即找到它,因为它位于测试根路径下,因此将在pytest发现测试时加载它。在第二次调用中,conftest.py位于测试根目录中,因此即使在测试会话开始之前也会加载它(在加载通过-parg 传递并通过setuptools入口点注册的插件之后)。运行pytest -s(禁用输出捕获)应该会显示位于该==== test session starts ====行上方的自定义打印。
如果您希望两次调用之间的打印内容相同,请将其放入合适的挂钩中。例如,要始终CONFTEST loaded在测试收集完成后打印,请使用:
# api_tests/conftest.py
def pytest_collectreport(report):
print("CONFTEST loaded")
还有其他选项可用于自定义输出放置;最好是查看参考中的Hookspytest
下的可用钩子列表。
添加回答
举报