pytest 钩子函数 有哪些
pytest 内置钩子很多,贯穿“启动 → 收集 → 执行 → 报告 → 退出”的整个生命周期。完整清单见 pytest Hooks API Reference。
常用钩子可以按阶段理解:
| 阶段 | 常用钩子 | 作用 |
|---|---|---|
| 启动与配置 | pytest_addoption |
注册自定义命令行参数 |
pytest_configure |
pytest 初始化配置完成后调用 | |
pytest_unconfigure |
pytest 退出前清理配置 | |
pytest_addhooks |
注册自定义钩子规范 | |
| 测试收集 | pytest_ignore_collect |
决定是否跳过某个文件或目录 |
pytest_collect_file |
自定义测试文件收集 | |
pytest_pycollect_makeitem |
自定义 Python 测试对象收集 | |
pytest_generate_tests |
动态生成参数化测试 | |
pytest_make_parametrize_id |
自定义参数化用例 ID | |
pytest_collection_modifyitems |
收集完后排序、过滤或标记用例 | |
pytest_collection_finish |
所有用例收集完成后调用 | |
| 测试执行 | pytest_runtest_setup |
每条用例执行前调用 |
pytest_runtest_call |
执行测试主体时调用 | |
pytest_runtest_teardown |
每条用例执行后调用 | |
pytest_runtest_protocol |
控制一条用例的完整执行流程 | |
pytest_runtest_makereport |
生成 setup/call/teardown 阶段结果 | |
pytest_pyfunc_call |
控制普通 Python 测试函数的调用 | |
| Fixture | pytest_fixture_setup |
fixture 初始化时调用 |
pytest_fixture_post_finalizer |
fixture 清理完成后调用 | |
| 报告与日志 | pytest_runtest_logstart |
一条测试开始时调用 |
pytest_runtest_logreport |
每个测试阶段产生报告时调用 | |
pytest_runtest_logfinish |
一条测试结束时调用 | |
pytest_report_teststatus |
自定义测试状态显示 | |
pytest_report_header |
自定义测试报告头部 | |
pytest_terminal_summary |
自定义终端最终汇总 | |
| 会话生命周期 | pytest_sessionstart |
测试会话开始 |
pytest_sessionfinish |
测试会话结束并可修改退出码 | |
| 异常与调试 | pytest_keyboard_interrupt |
用户按 Ctrl+C 时调用 |
pytest_internalerror |
pytest 内部发生错误 | |
pytest_exception_interact |
测试异常进入交互处理时调用 | |
pytest_enter_pdb |
进入 PDB 调试器时调用 |

浙公网安备 33010602011771号