超详细从入门到精通,pytest自动化测试框架实战-用例收集钩子(六)
目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
pytest 的用例收集钩子是 pytest 中比较重要的一个钩子,在 pytest 执行测试时会自动调用。
Pytest中用例收集的钩子函数,收集钩子,顾名思义就是pytest在用例收集阶段会执行的钩子函数。
Pytest自动化测试框架:https://www.bilibili.com/video/BV18K411m7FH/
pytest用来收集用例相关的钩子函数:
1、pytest_collection
设置pytest收集用例执行的流程,这个钩子函数一般不需要重写,除非你想自己制定pytest用例收集的流程。
参数
session:pytest 会话对象
触发时机:收集用例之前执行,执行该钩子进行用例收集
pytest默认的用例收集流程为
1)以 session作为初始收集器 ,按照下面的流程,收集所有测试用例
执行pytest_collectstart(collector)开始收集
执行report = pytest_make_collect_report(collector),创建一个收集报告对象
收集过程中,如果出现交互异常,则执行pytest_exception_interact(collector, call, report)
对收集的节点进行判断,如果是用例执行pytest_itemcollected(item),如果是收集器则进行递归处理。
执行pytest_collectreport(report),处理收集的报告
2)对收集到的用例进行修改。
执行pytest_collection_modifyitems(session, config, items)
3)整理收集到的测试用例。
执行pytest_collection_finish(session)
4)将收集的用例保存到session.items中。
5)将收集的用例数量设置为 session.testscollected 属性。
2、pytest_ignore_collect
参数
collection_path: 路径
config: pytest配置对象
触发时机:对文件和目录进行收集之前会执行改钩子函数
返回值:布尔值(会根据返回值为True还是False来决定是否收集改路径下的用例)
3、pytest_collect_file
搜索测试文件路径的钩子函数
参数
file_path : 收集的路径
parent : 父级目录路径
触发时机:对每个路径进行收集之前会执行改钩子函数
返回值:布尔值(会根据返回值为True还是False来决定是否收集该路径下的用例)
4、pytest_pycollect_makemodule
收集测试模块的钩子函数,每个测试模块都会调用该钩子函数进行收集
参数
module_path : 模块路径
触发时机:搜索测试模块触发的钩子函数
返回值:模块
5、pytest_pycollect_makeitem
收集模块中用例的钩子函数,对模块中的用例进行收集
参数
collector: 模块对象
name: 名称
obj: 对象
触发时机:对文件和目录进行收集之前会执行改钩子函数
6、pytest_generate_tests
根据用例参数化传入的参数数量生成测试用例,生成测试用例
参数
metafunc : 元函数
触发时机:对用例方法进行参数化,生成用例
7、pytest_make_parametrize_id
参数化生成用例时,生成parametrize_id(默认情况下参数化生成的用例名由原用例名和parametrize_id组成),可以通过该钩子函数修改生成用例的方法名。
参数
config : pytest 配置对象
val : 参数化值
argname: pytest 生成的自动参数名称
触发时机:对用例方法进行参数化,生成用例名称
返回参数化的id
8、pytest_markeval_namespace
收集用例时 评估 被xfail或skipif标记用例的条件,改变测试跳过的钩子:
参数
config : pytest 配置对象
触发时机:收集的用例被xfail或skipif标记用例时触发
9、pytest_collection_modifyitems
用例收集完成后,可以通过该钩子函数修改用例的顺序,删除或以其他方式修改测试用例。
参数
session: pytest会话对象
config : pytest 配置对象
items: 测试用例列表
触发时机:用例收集完后调用该钩子函数
10、pytest_collection_finish
参数
session: pytest会话对象
触发时机:在收集完用例和修改收用例集之后调用
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
勇敢地面对挑战,不断追求进步和成长。不要被困难所吓倒,坚持自己的信念,勇往直前。只要你愿意付出努力,就一定能够实现梦想,成为更好的自己。加油!
每一份努力都不会白费,每一个梦想都值得追求。只有坚持不懈,才能看到成功的曙光。在漫漫人生路上,勇往直前,莫失莫忘初心,相信自己。
不要停下脚步,因为你永远不知道下一步会带给你什么。只有坚定的信念、持之以恒的努力,才能走向成功的道路。所以,和命运对抗,与自己战斗,相信每一次奋斗都值得。