学网站前端,wordpress 文章 指定,平台投诉怎么投诉,网站订票策划方案前言
pytest这个框架提供了非常多的钩子。通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预#xff0c;根据需求去开发对应的插件#xff0c;以满足自己的使用场景。
01 什么是钩子函数#xff1f;
钩子函数在pytest称之为Hook函数,它pytes…前言
pytest这个框架提供了非常多的钩子。通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预根据需求去开发对应的插件以满足自己的使用场景。
01 什么是钩子函数
钩子函数在pytest称之为Hook函数,它pytest框架的开发者为了让用户更好的去扩展开发预留的一些函数。而预留的这些函数在整个测试执行的生命周期中特定的阶段会自动去调用执行。如下图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K8HqjW5y-1689820443345)(/api/attachments/426316)]
pytest中的钩子函数按功能一共分为6类引导钩子初始化钩子、用例收集钩子、用例执行钩子、报告钩子、调试钩子。
详细文档可以查看pytest官方文档https://docs.pytest.org/en/latest/reference/reference.html?highlighthook#hooks
02 用例收集钩子
2.1 pytest_collection
pytest_collection设置pytest收集用例执行的流程这个钩子函数一般不需要重写除非你想自己制定pytest用例收集的流程。
参数
sessionpytest 会话对象。 触发时机收集用例之前执行,执行该钩子进行用例收集。
pytest默认的用例收集流程为: 以 session作为初始收集器 按照下面的流程收集所有测试用例 执行pytest_collectstart(collector)开始收集执行report pytest_make_collect_report(collector),创建一个收集报告对象收集过程中如果出现交互异常则执行pytest_exception_interact(collector, call, report)对收集的节点进行判断如果是用例执行pytest_itemcollected(item)如果是收集器则进行递归处理。执行pytest_collectreport(report)处理收集的报告 对收集到的用例进行修改。 执行pytest_collection_modifyitems(session, config, items) 整理收集到的测试用例。 执行pytest_collection_finish(session) 将收集的用例保存到session.items中。 将收集的用例数量设置为 session.testscollected 属性。
2.2 pytest_ignore_collect
参数
collection_path: 路径。config: pytest配置对象。
触发时机
对文件和目录进行收集之前会执行改钩子函数。
返回值
布尔值会根据返回值为True还是False来决定是否收集改路径下的用例。
2.3 pytest_collect_file
搜索测试文件路径的钩子函数。
参数
file_path : 收集的路径。parent : 父级目录路径。
触发时机
对每个路径进行收集之前会执行改钩子函数。
返回值
布尔值会根据返回值为True还是False来决定是否收集该路径下的用例。
2.4 pytest_pycollect_makemodule
收集测试模块的钩子函数每个测试模块都会调用该钩子函数进行收集。
参数
module_path : 模块路径。
触发时机
搜索测试模块触发的钩子函数。
返回值
模块。
2.5 pytest_pycollect_makeitem
收集模块中用例的钩子函数对模块中的用例进行收集。
参数
collector: 模块对象。name: 名称。obj: 对象。
触发时机
对文件和目录进行收集之前会执行改钩子函数。
2.6 pytest_generate_tests
根据用例参数化传入的参数数量生成测试用例生成测试用例。 参数
metafunc : 元函数。
触发时机
对用例方法进行参数化生成用例。
2.7 pytest_make_parametrize_id
参数化生成用例时生成parametrize_id(默认情况下参数化生成的用例名由原用例名和parametrize_id组成)可以通过该钩子函数修改生成用例的方法名。
参数
config : pytest 配置对象。val : 参数化值。argname: pytest 生成的自动参数名称。
触发时机
对用例方法进行参数化生成用例名称。
返回值
参数化的id。
2.8 pytest_markeval_namespace
收集用例时 评估 被xfail或skipif标记用例的条件改变测试跳过的钩子。
参数
config : pytest 配置对象。
触发时机
收集的用例被xfail或skipif标记用例时触发。
2.9 pytest_collection_modifyitems
用例收集完成后可以通过该钩子函数修改用例的顺序删除或以其他方式修改测试用例。 参数
session: pytest会话对象。config : pytest 配置对象。items: 测试用例列表。
触发时机
用例收集完后调用该钩子函数。
2.10 pytest_collection_finish
参数
session: pytest会话对象。
触发时机
在收集完用例和修改收用例集之后调用。