pytest这个框架提供了非常多的钩子。通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预,根据需求去开发对应的插件,以满足自己的使用场景。
钩子函数在pytest称之为Hook函数,它pytest框架的开发者,为了让用户更好的去扩展开发预留的一些函数。而预留的这些函数,在整个测试执行的生命周期中特定的阶段会自动去调用执行。如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K8HqjW5y-1689820443345)(/api/attachments/426316)]
pytest中的钩子函数按功能一共分为6类:引导钩子,初始化钩子、用例收集钩子、用例执行钩子、报告钩子、调试钩子。
详细文档可以查看pytest官方文档https://docs.pytest.org/en/latest/reference/reference.html?highlight=hook#hooks
pytest_collection设置pytest收集用例执行的流程,这个钩子函数一般不需要重写,除非你想自己制定pytest用例收集的流程。
参数:
pytest默认的用例收集流程为:
以 session作为初始收集器 ,按照下面的流程,收集所有测试用例
对收集到的用例进行修改。
整理收集到的测试用例。
将收集的用例保存到session.items中。
将收集的用例数量设置为 session.testscollected 属性。
参数:
触发时机:
返回值:
搜索测试文件路径的钩子函数。
参数:
触发时机:
返回值:
收集测试模块的钩子函数,每个测试模块都会调用该钩子函数进行收集。
参数:
触发时机:
返回值:
收集模块中用例的钩子函数,对模块中的用例进行收集。
参数:
触发时机:
根据用例参数化传入的参数数量生成测试用例,生成测试用例。
参数:
触发时机:
参数化生成用例时,生成parametrize_id(默认情况下参数化生成的用例名由原用例名和parametrize_id组成),可以通过该钩子函数修改生成用例的方法名。
参数:
触发时机:
返回值:
收集用例时 评估 被xfail或skipif标记用例的条件,改变测试跳过的钩子。
参数:
触发时机:
用例收集完成后,可以通过该钩子函数修改用例的顺序,删除或以其他方式修改测试用例。
参数:
触发时机:
参数
触发时机: