pytest钩子函数(一):引导钩子和调试钩子

前言

pytest这个框架提供了非常多的钩子。通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预,根据需求去开发对应的插件,以满足自己的使用场景。

01 什么是钩子函数?

钩子函数在pytest称之为Hook函数,它pytest框架的开发者,为了让用户更好的去扩展开发预留的一些函数。而预留的这些函数,在整个测试执行的生命周期中特定的阶段会自动去调用执行。如下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nv6iC7uZ-1689820387589)(/api/attachments/426316)

pytest中的钩子函数按功能一共分为6类:引导钩子,初始化钩子、用例收集钩子、用例执行钩子、报告钩子、调试钩子。

详细文档可以查看pytest官方文档https://docs.pytest.org/en/latest/reference/reference.html?highlight=hook#hooks

02 引导钩子

引导钩子调用足够早,主要作用是用来解析命令和注册插件(内部插件和 setuptools 插件)。

2.1 pytest_load_initial_conftests

参数:

  • early_config:pytest 配置对象。
  • args:命令行上传递的参数。
  • parser:命令行添加的选项。

触发时机:

  • 当在命令行通过pytest执行命令时,会先执行该钩子函数。

默认作用:

  • 加载conftest.py文件。

注意点:

  • 该钩子函数只有定义在插件中才会调用,在conftest定义则不会调用。

2.2 pytest_cmdline_main

触发时机:执行运行主命令后执行。

默认作用:

  • 调用命令解析钩子pytest_cmdline_parse和执行runtest_mainloop。

参数

  • config:pytest 配置对象

2.3 pytest_cmdline_parse

参数

  • args:命令行上传递的参数。
  • pluginmanager :插件管理器。

默认作用:

  • 用来初始化配置对象,解析指定的参数。

注意点:

  • 该钩子函数只有定义在插件中才会调用,在conftest定义则不会调用。

03 调试钩子

很少有可以用于特殊报告或与异常交互的挂钩:

  • pytest_internalerror(excrepr: ExceptionRepr, excinfo: ExceptionInfoBaseException) 要求内部错误。返回True以禁止对将INTERNALERROR消息直接打印到sys.stderr的回退处理。
  • pytest_keyboard_interrupt(excinfo: ExceptionInfoUnion\[KeyboardInterrupt, Exit]) 要求键盘中断。
  • pytest_exception_interact(node: UnionItem, Collector, call: CallInfoAny, report: UnionCollectReport, TestReport) 在引发可能可以交互处理的异常时调用。
  • pytest_enter_pdb(config: Config, pdb: pdb.Pdb) 调用了pdb.set_trace()。
相关推荐
笃行35028 分钟前
拆一台数据集成产品:KFS 的骨架、肌肉和神经
数据库
4SAPI29 分钟前
搭建 AI 数据分析工具大模型 API 选型指南
数据库·人工智能·架构·php·1024程序员节
额额额对了41 分钟前
嵌入式 Linux 实战:i.MX6ULL 上的 CAN 通信与摄像头采集
linux·运维·服务器
灯澜忆梦2 小时前
【Linux】#10 | Linux 终端实用快捷键 + 安装应用
linux·运维·服务器
码士集团小青2 小时前
面霸篇:高频 Java 基础问题(核心卷一)
linux·服务器·数据库·redis·缓存·1024程序员节
LMT流氓兔3 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节
cuijiecheng20183 小时前
WeFlow 无法使用怎么办?一次数据库组件到期问题的排查与修复
数据库·oracle
OnlyEasyCode4 小时前
IIS开放端口转发后端
运维·服务器
一条泥憨鱼4 小时前
【Redis | 黑马点评】附近商铺功能源码解读
数据库·redis·缓存