pytest_collectiont
设置 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 属性。
pytest_ignore_collect
参数
- collection_path: 路径
- config: pytest 配置对象
触发时机:
-
对文件和目录进行收集之前会执行改钩子函数
返回值:
-
布尔值(会根据返回值为 True 还是 False 来决定是否收集改路径下的用例)
pytest_collect_file
搜索测试文件路径的钩子函数
参数
- file_path : 收集的路径
- parent : 父级目录路径
触发时机:
-
对每个路径进行收集之前会执行改钩子函数
返回值:
-
布尔值(会根据返回值为 True 还是 False 来决定是否收集该路径下的用例
pytest_pycollect_makemodule
收集测试模块的钩子函数,每个测试模块都会调用该钩子函数进行收集
参数
-
module_path : 模块路径
触发时机:
-
搜索测试模块触发的钩子函数
返回值:
-
模块
pytest_pycollect_makeitem
收集模块中用例的钩子函数,对模块中的用例进行收集
参数
- collector: 模块对象
- name: 名称
- obj: 对象
触发时机:
- 对文件和目录进行收集之前会执行改钩子函数
返回值:
pytest_generate_tests
根据用例参数化传入的参数数量生成测试用例,生成测试用例
参数
-
metafunc : 元函数
触发时机:
-
对用例方法进行参数化,生成用例
pytest_make_parametrize_id
参数化生成用例时,生成 parametrize_id(默认情况下参数化生成的用例名由原用例名和 parametrize_id 组成),可以通过该钩子函数修改生成用例的方法名。
参数
- config : pytest 配置对象
- val : 参数化值
- argname: pytest 生成的自动参数名称
触发时机:
- 对用例方法进行参数化,生成用例名称
返回参数化的 id
pytest_markeval_namespace
收集用例时 评估 被 xfail 或 skipif 标记用例的条件,改变测试跳过的钩子:
参数
-
config : pytest 配置对象
触发时机:
-
收集的用例被 xfail 或 skipif 标记用例时触发
pytest_collection_modifyitems
用例收集完成后,可以通过该钩子函数修改用例的顺序,删除或以其他方式修改测试用例。
参数
- session: pytest 会话对象
- config : pytest 配置对象
- items: 测试用例列
触发时机:
- 用例收集完后调用该钩子函数
pytest_collection_finish
参数
-
session: pytest 会话对象
触发时机:
-
在收集完用例和修改收用例集之后调用