Pytest 内置插件 hook 体系
简介
Pytest 提供了许多钩子(hooks)来扩展和自定义测试执行的行为。
钩子是在特定的事件点自动调用的函数,允许你在测试过程中进行自定义操作。
Pytest hook 函数的优点
-
自动触发机制:Pytest 钩子函数是在 Pytest 测试执行过程中自动触发的,无需显式调用。Pytest 根据特定的事件点在合适的时机自动调用这些函数。
-
预定义名称:每个 Pytest 钩子函数都有一个预定义的名称,这些名称是 Pytest 所认可的,你只需按照这些名称来定义函数,Pytest 就会自动调用它们。
-
自定义操作:Pytest 钩子函数允许你在测试执行过程中执行自定义操作,以满足特定需求。你可以在这些钩子函数中编写代码来修改配置、记录日志、动态生成测试用例、处理测试结果等。
-
扩展性:Pytest 钩子函数提供了灵活性和扩展性,允许你自定义测试框架的行为,以适应不同的项目和测试场景。
-
丰富的钩子函数库:Pytest 提供了许多不同的钩子函数,涵盖了测试的各个方面,包括配置、收集、执行、报告等,这使得你可以在测试过程中干预或扩展任何阶段的行为。
Pytest hook 函数执行顺序
Pytest hook 函数的执行顺序在测试执行的不同阶段会有所不同。
以下是一些常见的 Pytest 钩子函数以及它们的执行顺序:
···
# 添加命令行参数,运时会先读取命令行参数
pytest_addoption
# 收集测试用例,收集之后(改编码,改执行顺序)
pytest_collection_modifyitems
# 收集之后的操作
pytest_collection_finish
# 在调用 pytest_runtest_call 之前调用
pytest_runtest_setup
# 运行测试用例,返回 setup,call,teardown 的执行结果
pytest_runtest_makereport
···
需要注意的是,钩子函数的执行顺序可以根据具体的测试配置和需求而有所不同。不同的测试插件和配置选项也可能引入额外的钩子函数,从而影响执行顺序。 通常情况下,Pytest 会根据钩子的定义和命名规则来触发它们,但具体的执行顺序是由 Pytest 控制的。
总结
- Pytest hook 函数的优点。
- Pytest hook 函数执行顺序。