pytest教程-36-钩子函数-pytest_collection_start

领取资料,咨询答疑,请➕wei:  June__Go

上一小节我们学习了pytest_unconfigure钩子函数的使用方法,本小节我们讲解一下pytest_collection_start钩子函数的使用方法。

pytest_collection_start(session) 是一个 pytest 钩子函数,它在开始收集测试用例之前被调用。这个钩子可以用来执行一些测试前的准备工作,比如设置测试环境、初始化数据库连接等。以下是如何使用这个钩子函数的具体方法和代码示例:

首先,你需要在你的项目中创建或编辑 conftest.py 文件。这个文件位于你的测试目录下,pytest 会自动加载这个文件中的钩子函数。

然后,在 conftest.py 文件中定义 pytest_collection_start 钩子函数:

# conftest.pydef pytest_collection_start(session):# 在这里执行你的测试前准备工作print("Collection is starting...")# 例如,初始化数据库连接# 这里只是一个示例,你需要根据实际情况来编写代码import some_database_modulesession.db_connection = some_database_module.connect_to_database()# 或者设置一些全局变量session.global_variable = "This is a global variable set during collection"

在这个例子中,我们在钩子函数中打印了一条消息,表示测试用例的收集即将开始。然后,我们模拟了一个数据库连接的初始化过程,并将连接对象存储在 session 对象中。这样,在后续的测试中,我们可以通过 session.db_connection 来访问数据库连接。同时,我们还设置了一个全局变量 global_variable

请注意,session 对象是一个 pytest 会话对象,它包含了当前测试会话的信息。你可以在这个对象上设置属性,以便在测试过程中的其他钩子函数或测试用例中访问。

最后,运行你的测试,pytest 会自动调用 pytest_collection_start 钩子函数,并执行你定义的代码。例如:

pytest

这样,每当 pytest 开始收集测试用例时,都会执行你在 pytest_collection_start 钩子中定义的代码。这为你提供了一个在测试开始之前执行自定义逻辑的机会。

当然,让我们通过一个更复杂的示例来展示 pytest_collection_start 钩子函数的使用方法。在这个示例中,我们将模拟一个场景,其中我们需要在测试开始前加载配置文件、初始化日志系统,并为所有测试用例设置一个共享的测试数据。

首先,确保你的项目中有一个 conftest.py 文件。然后,添加以下代码:

# conftest.pyimport os
import json
import logging
from some_config_module import load_config  # 假设这是一个加载配置的模块# 设置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')def pytest_collection_start(session):# 打印开始收集测试用例的信息logging.info("Starting test collection...")# 加载配置文件config_path = os.path.join(os.path.dirname(__file__), 'config.json')if not os.path.exists(config_path):logging.error("Configuration file not found at path: %s", config_path)session.exitstatus = 1  # 设置退出状态,表示配置文件加载失败returntry:with open(config_path, 'r') as config_file:config_data = json.load(config_file)session.config = config_data  # 将配置数据存储在 session 对象中except json.JSONDecodeError as e:logging.error("Failed to decode configuration file: %s", e)session.exitstatus = 1  # 设置退出状态,表示配置文件解析失败return# 初始化测试数据session.test_data = {'user': 'test_user','password': 'test_password'}# 其他初始化操作...

在这个示例中,我们首先设置了日志系统,以便在测试过程中记录重要信息。然后,我们尝试加载一个名为 config.json 的配置文件。如果配置文件不存在或无法解析,我们将记录错误信息,并设置 session.exitstatus 为 1,这将导致 pytest 停止执行后续的测试。

如果配置文件加载成功,我们将配置数据存储在 session.config 中,这样在其他钩子函数或测试用例中就可以访问这些配置信息。同时,我们还创建了一个名为 session.test_data 的字典,用于存储所有测试用例共享的测试数据。

请注意,some_config_moduleconfig.json 是假设存在的模块和文件,你需要根据你的项目实际情况来替换它们。此外,session.exitstatus 是一个 pytest 提供的属性,用于设置测试会话的退出状态。如果设置为非零值,pytest 会提前终止测试执行。

现在,当你运行测试时,pytest_collection_start 钩子函数会被调用,执行上述的初始化操作。这为所有测试用例提供了一个准备就绪的环境。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走,希望可以帮助到大家!领取资料,咨询答疑,请➕wei:  June__Go

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

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

相关文章

Python_4-对象序列化操作

文章目录 Python中对象数据持久化操作模块学习笔记marshal模块优点缺点使用示例保存数据到文件从文件读取数据 shelve模块优点缺点使用示例保存数据到文件从文件读取数据 总结 Python中对象数据持久化操作模块学习笔记 在Python中,数据持久化指的是将程序中的数据结…

PHP基于B/S版 医院不良事件管理系统源码vscode+laravel8医院如何加强不良事件上报系统的管理 AEMS系统源码

PHP基于B/S版 医院不良事件管理系统源码vscodelaravel8医院如何加强不良事件上报系统的管理 AEMS系统源码 医院安全(不良)事件管理AEMS系统AEMS采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,实现以事件为主要…

快速编写测试用例(超详细~)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 当你学会了如何设计测试用例之后,接下来便是开始用例…

ERP系统电子文件归档和电子档案管理规范

ERP系统电子文件归档和电子档案管理规范 1 范围 本文件描述了企业资源计划(ERP)系统形成电子文件归档和电子档案管理的方法。 本文件适用于企业资源计划(ERP)系统(含采购、销售、物料、生产计划、质量、设备、项目…

使用C#和EF Core实现高效的SQL批量插入

在软件开发中,批量插入数据是一个常见的需求,特别是在数据迁移、初始化数据库或进行大量数据处理时。Entity Framework Core (EF Core) 是一个流行的.NET对象关系映射器(ORM),它简化了数据库操作,但在进行大…

Linux CPU 飙升 排查五步法

排查思路-五步法 1. top命令定位应用进程pid 找到最耗时的CPU的进程pid top2. top-Hp[pid]定位应用进程对应的线程tid 找到最消耗CPU的线程ID // 执行 top -Hp [pid] 定位应用进程对应的线程 tid // 按shift p 组合键,按照CPU占用率排序 > top -Hp 111683.…

SparkSQL编程入口和模型与SparkSQL基本编程

SparkSQL编程入口和模型 SparkSQL编程模型 主要通过两种方式操作SparkSQL,一种就是SQL,另一种为DataFrame和Dataset。 1)SQL:SQL不用多说,就和Hive操作一样,但是需要清楚一点的是,SQL操作的是表&#xf…

为什么很多人不推荐你用JWT?

为什么很多人不推荐你用JWT? 如果你经常看一些网上的带你做项目的教程,你就会发现 有很多的项目都用到了JWT。那么他到底安全吗?为什么那么多人不推荐你去使用。这个文章将会从全方面的带你了解JWT 以及他的优缺点。 什么是JWT? 这个是他的官网JSON…

Linux学习(一)-- 简单的认识

目录 1. Linux的诞生 2.Linux发行版 拓展: (1)什么是Linux系统的内核? (2)什么是Linux系统发行版? 1. Linux的诞生 Linux创始人: 林纳斯 托瓦兹 Linux 诞生于1991年,作者上大学…

2×24.5W、内置 DSP、低失真、高信噪比、I2S 输入 D 类音频功率放大器,完美替换TPA5805,晶豪,致盛,

ANT3825 是一款高集成度、高效率的双通道数字 输入功放。供电电压范围在 5V~18V,数字接口 电源支持 3.3V 或 1.8V。双通道 BTL 模式下输出 功率可以到 224.5W(4Ω,16V,THDN1%), 单通道 PBTL 模式下可以输出 37W&#x…

Spring IoCDI(2)—IoC详解

目录 一、IoC详解 1、Bean的存储 (1)Controller(控制器存储) 获取bean对象的其他方式 Bean 命名约定 (2)Service(服务存储) (3)Repository&#xff08…

2分钟教你Flutter怎么避免引用内存泄漏

2分钟教你Flutter怎么避免引用内存泄漏 内存泄漏原因1. 在当前类,或者方法等移除改引用,让其他自动释放,等下一轮GC扫描释放。如2. 使用弱引用-----**WeakReference**,当前使用完,生命周期结束后,自动释放。…

VTK —— 三、图形格式 - 示例1 - 读取.vtp文件并输出.ply文件(附完整源码)

代码效果:演示程序读取.vtp后输出.ply文件,使用paraview打开该输出的.ply文件 本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码: VTK —— 一、Windows10下编译VTK源码,并用V…

opencv图像处理详细讲

传统的计算机视觉框架: SimpleCV BoofCV Dlib JavaCV 深度学习计算机视觉框架 Caffe Tensorflow Pytorch Paddlepaddle Keras 深度视觉计算机视觉框架 OpenVINO TensorRT onnxruntime Deepface YOLO/DarkNet mmdetection Paddle-detection/seg/ocr …

重识来伊份:抢滩首店经济,休闲零食品牌的“面子”和“里子”

前不久,苹果静安零售店的首秀频频登上热搜。 这背后,不仅仅因为它是中国大陆最大的苹果旗舰店,还在于它的设计融入了时尚又古典的上海街区,吸引了众多市民拍照打卡。今年3月至5月,上海会持续举办“首发上海”春季系列…

电能计量抄表系统

1.电能计量抄表系统的概念和作用 电能计量抄表系统是一种前沿的自动化控制,主要运用于电力行业的电费计算及管理。它通过远程数据采集和处理,实时监控系统用户的用电状况,取代了传统的手工抄水表方法,降低了成本,降低…

五、VGA 叠加图像原理和实现(十字光标)

前言:该案例在VGA项目:联合精简帧双fifosobel算法 实现VGA显示项目的基础上进行改动。 要求:通过串口助手把 198x198 的十字光标图像二进制数据传递给 FPGA 板卡,FPGA 板 卡接收到后存储到 Ram 中用于 VGA 叠加显示。 预期效果展…

020、Python+fastapi,第一个Python项目走向第20步:ubuntu 24.04 docker 安装mysql8集群+redis集群(一)

系列文章 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 docker安装起来比较方便,不影响系统整体,和前面虚拟环境有异曲同工之妙,今天把老笔记本T400拿出来装了个ubuntu24…

小程序激励广告视频多次回调问题

1.问题 2. 激励视频使用及解决方案 官方文档 let videoAd null; // 在页面中定义激励视频广告 Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {let that this;// 创建激励视频广告实例if (wx.createRewardedVideoAd) {videoAd w…

知识库工具:付费的HelpLook AI知识库比免费的牵牛易帮好在哪里

在知识管理的领域中,选择合适的知识库工具对于企业来说很重要。市面上有很多知识库产品,有付费的和免费的,但是还是有很多企业会选择使用付费的,而不是免费的。这是为什么呢?这就是今天要探讨的问题,下面就…