超详细的 pytest 钩子函数 之初始钩子和引导钩子来啦

前几篇文章介绍了 pytest 点的基本使用,学完前面几篇的内容基本上就可以满足工作中编写用例和进行自动化测试的需求。从这篇文章开始会陆续给大家介绍 pytest 中的钩子函数,插件开发等等。

仔细去看过 pytest 文档的小伙伴,应该都有发现 pytest 这个框架提供了非常多的钩子。通过这些钩子我们可以对 pytest 用例收集、用例执行、报告输出等各个阶段进行干预,根据需求去开发对应的插件,以满足自己的使用场景。由于 pytest 提供的钩子函数非常的多,后续会分为多篇文章给大家分开介绍。这篇文章主要和大家介绍 pytest 的引导钩子和初始化钩子。

一、什么是钩子函数

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

在这里插入图片描述

关于 pytest 中的预留钩子,可以通过开发插件,和在 conftest.py 去实现这些钩子。每个钩子函数可以在多个插件中实现,每个钩子和执行的函数比是:1:N。

pytest 中的钩子函数按功能一共分为 6 类:引导钩子,初始化钩子、用例收集钩子、用例执行钩子、报告钩子、调试钩子,本文主要给大家介绍引导钩子和初始化钩子。

二、引导钩子

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

1、pytest_load_initial_conftests

参数:

early_config:pytest 配置对象。

args:命令行上传递的参数。

parser:命令行添加的选项。

触发时机:

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

默认作用:

加载 conftest.py 文件

注意点:

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

2、pytest_cmdline_main

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

默认作用:

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

参数

config:pytest 配置对象

3、pytest_cmdline_parse

参数

args:命令行上传递的参数。

pluginmanager :插件管理器

默认作用:

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

注意点:

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

三、初始化钩子

初始化钩子用来调用插件和 conftest.py 文件的初始化

1、pytest_addoption

参数

parser :参数解析器

pluginmanager :插件管理器

触发时机:

conftest 文件加载完之后执行, 在测试运行开始时调用一次。

作用:

添加运行命令的命令行参数,pytest.ini 的配置参数

Demo:

# 添加一个运行参数:--name
def pytest_addoption(parser,pluginmanager ):parser.addoption("--name",action="store",dest="name",default="World",help='参数的帮助提示信息',)# 添加一个ini文件的配置项
def pytest_addoption(parser,pluginmanager ):parser.addini("name",help='参数的帮助提示信息',type="string",default="musen",)

2、pytest_configure

参数

config:pytest 配置对象

触发时机:

在解析命令行选项后,每个插件和初始 conftest 文件都会调用此钩子,在导入其他 conftest 文件时调用该钩子。

默认作用:

允许插件和 conftest 文件执行初始配置。

3、pytest_unconfigure

参数

config:pytest 配置对象

触发时机:

在退出测试过程之前调用

4、pytest_sessionstart

参数

session:pytest 会话对象

触发时机:

在创建 Session 对象之后、执行收集测试用例之前调用

5、pytest_sessionfinish

参数

session:pytest 会话对象

exitstatus:pytest 将返回系统的状态

触发时机:

在整个测试运行完成后调用,就在将退出状态返回给系统之前

6、pytest_plugin_registered

参数

plugin :插件模块或实例

manager :pytest 插件管理器

作用:

注册一个新的插件

7、pytest_addhooks

参数

pluginmanager :插件管理器

触发时机:

注册插件时调用,添加钩子函数到执行列表

默认作用:

调用 pluginmanager.add_hookspecs(module_or_class, prefix) 注册插件

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 680748947,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504769.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习第一天-html基础

达标要求 网页的形成过程 常用的浏览器及常见的浏览器内核 web 标准三层组成 什么是HTML 熟练掌握HTML文档结构 熟练掌握HTML常用标签 1. 初识web前端 Web前端是创建Web页面或App等前端界面呈现给用户的过程。 Web前端开发是从网页制作演变而来,早期网站主…

【计算复杂性理论】证明复杂性(九):命题鸽巢原理的指数级归结下界——更简短的证明

往期文章: 【计算复杂性理论】证明复杂性(Proof Complexity)(一):简介 【计算复杂性理论】证明复杂性(二):归结(Resolution)与扩展归结&#xff…

什么是VR数字文化遗产保护|元宇宙文旅

VR数字文化遗产保护是指利用虚拟现实(VR)技术来保护和传承文化遗产。在数字化时代,许多珍贵的文化遗产面临着自然衰退、人为破坏或其他因素造成的威胁。通过应用VR技术,可以以全新的方式记录、保存和展示文化遗产,从而…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:栅格设置)

说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 栅格布局的列宽、列间距由距离最近的GridContainer父组件决定。使用栅格属性的组件树上至少需要有1个GridContainer容器组件。 gridSpan、gridOffset属性…

Python列表中添加删除元素不走弯路

1.append() 向列表中添加单个元素,一般用于尾部追加 list1 ["香妃", "乾隆", "贾南风", "赵飞燕", "汉武帝"]list1.append("周瑜") print(list1) # [香妃, 乾隆, 贾南风, 赵飞燕, 汉武帝, 周瑜]…

猫头虎分享已解决Bug || AttributeError: ‘str‘ object has no attribute ‘decode‘

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

Vue3_2024_1天【Vue3创建和响应式,对比Vue2】

前言: Vue3对比Vue2版本,它在性能、功能、易用性和可维护性方面都有显著的提升和改进。 性能优化:模板编译器的优化、对Proxy的支持以及使用了更加高效的Virtual DOM算法等。这使得Vue3的打包大小减少了41%,初次渲染提速55%&#…

SSH教程

ssh 是远程连接的利器, 可以说凡是涉及到 linux 服务器, ssh 就是一个绕不开的话题. 本文作为一个教程, 尽可能详细的帮助读者设置 ssh, 并给出一些常用的 ssh 配置方法 (主要用于 linux 系统的远程登录和文件传输). 1. 简介 ssh 分为两个部分, sshd 服务端和 ssh 客户端. ssh…

ROS2从入门到精通:理论与实战

ROS是什么? 随着人工智能技术的飞速发展与进步,机器人的智能化已经成为现代机器人发展的终极目标。机器人发展的速度在不断提升,应用范围也在不断拓展,例如自动驾驶、移动机器人、操作机器人、信息机器人等。机器人系统是很多复杂…

mac 安装hbuilderx

下载 HBuilderX下载地址: 下载地址 选额mac版本点击下载 安装 如图,将HBuilderX拖到Applications,才是正确的安装姿势。 MacOSX,软件必须安装到/Applications目录,如未安装到此目录,可能会出现插件安装失败、项目创建…

【C++】类的转换函数

使用场景 C中当你创建了一个类&#xff0c;你想把这个类对象转换成基本类型的函数。类对象->基本类型对象 原理 如下实例&#xff0c;设计一个分数类&#xff0c;实现分数转换成double 浮点数的转换函数。并在mian函数隐式调用。 #include<iostream> class Fractio…

[Linux]如何理解kernel、shell、bash

文章目录 概念总览kernelshell&bash 概念总览 内核(kernel) &#xff0c;外壳(shell) &#xff0c;bash kernel kernel是指操作系统中的核心部分&#xff0c;用户一般是不能直接使用kernel的。它主要负责管理硬件资源和提供系统服务&#xff0c;如内存管理、进程管理、文件…