1 回答

TA貢獻1813條經(jīng)驗 獲得超2個贊
該conftest插件將在兩次調(diào)用中注冊,唯一的區(qū)別是注冊階段。如果有疑問,請?zhí)砑?-traceconfig參數(shù)以按注冊順序列出已注冊的插件:
$ 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'>
...
在第一次調(diào)用中,conftest.py不會立即找到它,因為它位于測試根路徑下,因此將在pytest發(fā)現(xiàn)測試時加載它。在第二次調(diào)用中,conftest.py位于測試根目錄中,因此即使在測試會話開始之前也會加載它(在加載通過-parg 傳遞并通過setuptools入口點注冊的插件之后)。運行pytest -s(禁用輸出捕獲)應(yīng)該會顯示位于該==== test session starts ====行上方的自定義打印。
如果您希望兩次調(diào)用之間的打印內(nèi)容相同,請將其放入合適的掛鉤中。例如,要始終CONFTEST loaded在測試收集完成后打印,請使用:
# api_tests/conftest.py
def pytest_collectreport(report):
? ? print("CONFTEST loaded")
還有其他選項可用于自定義輸出放置;最好是查看參考中的Hookspytest
下的可用鉤子列表。
添加回答
舉報