pytest 钩子函数 (二) 用例收集钩子

1前言

上一篇给大家详细的介绍了 pytest 的引导钩子和初始化钩子,如果没看过的可以点此处了解:

【学习才是测试猿的永动力!超详细的 pytest 钩子函数 之初始钩子和引导钩子来啦】

今天这一篇主要给大家介绍 pytest 中用例收集的钩子函数,收集钩子,顾名思义就是 pytest 在用例收集阶段会执行的钩子函数,直接进入正题。

???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 会话对象
  • 触发时机:

  • 在收集完用例和修改收用例集之后调用
  • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年4月11日
    下一篇 2022年4月11日

    相关推荐