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: ExceptionInfo[BaseException]) 要求内部错误。返回True以禁止对将INTERNALERROR消息直接打印到sys.stderr的回退处理。
  • pytest_keyboard_interrupt(excinfo: ExceptionInfo[Union[KeyboardInterrupt, Exit]]) 要求键盘中断。
  • pytest_exception_interact(node: Union[Item, Collector], call: CallInfo[Any], report: Union[CollectReport, TestReport]) 在引发可能可以交互处理的异常时调用。
  • pytest_enter_pdb(config: Config, pdb: pdb.Pdb) 调用了pdb.set_trace()。
相关推荐
白云如幻3 分钟前
SQL99版外连接
数据库·mysql
我们的五年25 分钟前
【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置
linux·服务器·数据库·学习·mysql·adb
行码棋27 分钟前
Linux无sudo权限将zsh作为默认shell
linux·服务器
股票GPT分析1 小时前
《Python 股票交易分析:开启智能投资新时代》(一)
服务器·开发语言·python·fastapi
猫猫不是喵喵.1 小时前
【Linux】Linux入门实操——rpm与yum
linux·运维·服务器
okmacong1 小时前
4、MAC地址、ARP协议解析
服务器·网络·macos
ProtonBase1 小时前
分布式 Data Warebase - 构筑 AI 时代数据基石
大数据·数据库·数据仓库·人工智能·分布式·数据分析·数据库系统
辰_砂1 小时前
Ubuntu24.04源码安装postgresql17
数据库
yyycqupt2 小时前
数据库连接池(二)
linux·数据库·c++·后端·单例模式
菜鸟小贤贤2 小时前
mac安装Pytest、Allure、brew
python·macos·自动化·pytest