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()。
相关推荐
岁岁种桃花儿4 小时前
MySQL从入门到精通系列:InnoDB记录存储结构
数据库·mysql
郝亚军6 小时前
如何在Ubuntu和win10/11之间通过samba访问对方的文件
linux·服务器·ubuntu
jiunian_cn6 小时前
【Redis】hash数据类型相关指令
数据库·redis·哈希算法
冉冰学姐6 小时前
SSM在线影评网站平台82ap4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·在线影评平台·影片分类
Exquisite.7 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
知识分享小能手7 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019数据库的操作(2)
数据库·学习·sqlserver
踩坑小念8 小时前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
萧曵 丶9 小时前
MySQL 语句书写顺序与执行顺序对比速记表
数据库·mysql
Wiktok9 小时前
MySQL的常用数据类型
数据库·mysql
曹牧10 小时前
Oracle 表闪回(Flashback Table)
数据库·oracle