pytest教程-44-钩子函数-pytest_report_collectionfinish

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

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

pytest_report_collectionfinish 钩子函数在 pytest 完成所有测试用例的收集后被调用。这个钩子可以用来在测试执行之前执行一些最终的检查或操作,例如验证测试用例的数量、打印收集到的测试用例列表、或者执行一些自定义的报告生成。

以下是一个具体的代码示例,展示了如何在 conftest.py 文件中使用 pytest_report_collectionfinish 钩子函数:

# conftest.pyimport pytestdef pytest_report_collectionfinish(session):# 获取收集到的测试用例数量num_tests_collected = len(session.items)# 获取收集到的测试用例列表test_list = [item.name for item in session.items]# 打印测试用例数量和列表print(f"\nTotal number of tests collected: {num_tests_collected}")print("List of collected tests:")for test in test_list:print(f" - {test}")# 执行其他自定义的报告生成或操作# 例如,你可以在这里生成一个 HTML 报告或者导出测试用例列表到一个文件# ...# 如果需要,可以在这里执行一些清理工作# ...# 你也可以在 pytest 运行结束时执行一些操作
def pytest_sessionfinish(session, exitstatus):# 在这里执行测试运行结束后的操作,例如发送测试报告# ...

在这个示例中,我们在 pytest_report_collectionfinish 钩子函数中首先获取了收集到的测试用例数量和列表。然后,我们打印了这些信息,以便用户在命令行中看到。这个列表可以帮助用户快速了解哪些测试用例将被执行。

我们还提供了一个 pytest_sessionfinish 钩子函数的示例,它在测试会话结束时被调用。在这个钩子中,你可以执行一些清理工作,例如关闭资源、发送测试报告等。

请注意,这个示例中的代码仅用于演示如何使用 pytest_report_collectionfinish 钩子函数。在实际应用中,你可能需要根据具体的测试需求来调整这些操作,例如生成自定义的报告格式或者执行其他类型的后处理。

在这个更复杂的示例中,我们将使用 pytest_report_collectionfinish 钩子函数来执行一系列高级操作。我们将验证测试用例的收集结果,记录测试用例的详细信息,生成一个自定义的测试用例报告,并在收集过程结束后执行一些清理工作。这个示例将展示如何结合多个钩子函数来提供更全面的测试报告和后处理。

首先,确保你的项目中有一个 conftest.py 文件。然后,在 conftest.py 文件中定义 pytest_report_collectionfinish 和其他相关钩子函数:

# conftest.pyimport pytest
import os
import json
from datetime import datetime# 全局变量用于存储测试用例的详细信息
collected_tests_info = {}def pytest_collectitem(item):# 在每个测试用例被收集时,记录其信息collected_tests_info[item.name] = {'file': item.fspath.basename,'line': item.location[0],'module': item.location[1],'parent': item.parent.name}def pytest_report_collectionfinish(session):# 获取当前时间戳timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")# 创建自定义的测试用例报告文件report_file = f"pytest_test_collection_report_{timestamp}.json"# 将收集到的测试用例信息写入 JSON 文件with open(report_file, 'w') as json_report:json.dump(collected_tests_info, json_report, indent=4)# 打印报告文件的路径print(f"\nTest collection report saved to: {os.path.abspath(report_file)}")# 执行清理工作,例如关闭数据库连接或网络资源# ...# 如果需要,可以在这里执行其他后处理操作# ...# 在测试运行结束时执行的操作
def pytest_sessionfinish(session, exitstatus):# 在这里执行测试运行结束后的操作,例如发送测试报告# ...

在这个示例中,我们首先定义了一个 pytest_collectitem 钩子函数来记录每个被收集的测试用例的详细信息。这些信息包括测试用例所在的文件、行号、模块和父模块。我们将这些信息存储在全局变量 collected_tests_info 中。

然后,在 pytest_report_collectionfinish 钩子函数中,我们创建了一个 JSON 文件来保存收集到的测试用例信息。这个文件包含了所有测试用例的详细信息,可以用于后续的分析或报告生成。

我们还定义了一个 pytest_sessionfinish 钩子函数,它可以在测试会话结束时执行一些操作,例如发送测试报告或执行其他清理工作。

请注意,这个示例中的代码仅用于演示如何使用 pytest_report_collectionfinish 钩子函数来生成自定义的测试用例报告。在实际应用中,你可能需要根据具体的测试需求来调整这些操作,例如生成不同格式的报告或者执行更复杂的后处理逻辑。

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

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

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

相关文章

Java二分查找

二分查找(Binary Search)是一种在有序数组中查找目标值的算法。Java中实现二分查找的示例代码如下: public class BinarySearch {// 二分查找方法public static int binarySearch(int[] array, int target) {int left 0;int right array.le…

算法训练营第二十七天打卡 | 回溯法、LeetCode 77 组合问题 笔试题 | 最小改正字符数、符合条件的不相邻结点数、完美数组

最小改正字符数 给定一个由0和1的字符串和该字符串中某个区间左边界和右边界,要求求出将该区间字符串变成01间隔(例如101、010)的字符串需要改动的最小字符数。 给定输入第一行是n,表示区间数,第二行是该字符串s&#…

【windows】typora激活教程

申明 个人以为,Typora是最好用的markdown编辑软件,以下内容纯属个人实验,请购买正版license支持作者。 详细步骤 按照以下步骤找到Typora安装目录并修改这个以LicenseIndex开头命名的JavaScript 文件: 找到安装 Typora 的目录…

部署达梦数据库主从配置详细操作DM8

服务器配置 主库 192.168.81.128 实例名 dm-1 从库 192.168.81.129 实例名 dm-2 以下安装部署主从服务器都操作 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld 注意安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。…

前端面试:谈谈 JS 垃圾回收机制

垃圾回收 JavaScript 中的内存管理是自动执行的,而且是不可见的。我们创建基本类型、对象、函数……所有这些都需要内存。 当不再需要某样东西时会发生什么? JavaScript 引擎是如何发现并清理它? 可达性 JavaScript 中内存管理的主要概念是可达性。 简单地说…

运维:SSH常用命令简介

SH,全称为Secure Shell,是建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。通过 SSH 可以对所有传输的数据进行加密&…

宝塔Linux面板5.9版本升级新版失败解决方法

下载地址:宝塔Linux面板5.9升级教程 宝塔5.9版本升级最新版宝塔失败,可以参考这份详细教程(不断更新中) 安装要求: Python版本: 2.6/2.7(安装宝塔时会自动安装) 内存:1…

EPLAN的国产平替软件?SuperWORKS自动化版第三期收官!

EPLAN的国产平替软件SuperWORKS自动化版,目前已经出了两期教程,可翻阅下方历史视频查看~ EPLAN的国产平替软件?SuperWORKS自动化版尝鲜 EPLAN的国产平替软件——SuperWORKS自动化版教程来袭! 今天,我们迎来了这一系…

TypeScript(十六)配置相关(tsconfig配置)

目录 前言 本文收录于TypeScript知识总结系列文章,欢迎指正! 常用配置 全部配置 Compiler Options (编译器选项) Type Checking(类型检查) Modules(模块) Emit(发出) Java…

NX二次开发——测量距离(两个对象之间最近、最远距离)

一、概述 最近看到 一些文章比较有趣,所以做个记录,顺便写一下博客,附上全部代码,方便刚从事NX二次开发同僚的理解。本次主要模拟NX自带的测量工具中对两个实体对象进行测量距离。NX系统功能如下所示: 二、代码解析 主…

一图看懂git merge和git rebase的区别!!

一图看懂git merge和git rebase的区别!! Git 是一个非常流行的版本控制系统,它帮助开发者管理代码的不同版本。在 Git 中,merge 和 rebase 是两种常用的将不同分支的更改合并到一起的方法,但它们在处理方式和结果上有…

CP模型--Raft协议介绍

文章目录 前言一、Raft 是什么:二、Raft的工作原理:2.1 Raft 节点的3中状态:2.2 集群启动 leader 节点的选举:在这里插入图片描述2.3 数据的同步(日志复制):2.4 leader 重新选举:2.5…

目前公认的一些好用AI工具

ChatGPT:这是一个广泛推荐和使用的AI聊天机器人,能够进行高效的文本生成和对话管理。它在多个证据中被提及,显示其普遍性和实用性。 Midjourney:这是一款强大的AI绘画工具,特别适合创意写作和图像生成。它在多个来源中…

Git怎么查询当前的仓库情况,比如是否有没添加的到Git版本控制的文件、是否有没追踪的文件、是否有新增的文件?

2024年5月9日,周四上午 在 Git 中,要查询当前仓库的情况,主要关注的是文件的状态,包括已修改(modified)、已暂存(staged)和已提交(committed)的状态。 以下是…

Web 安全漏洞之文件上传

目录 文件上传漏洞及危害 文件名 HTML 和 SVG 软链 服务器磁盘 防御方法 网络安全学习路线 (2024最新整理) 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明: 文件上传漏洞及危害 文件上传漏洞…

基于Idea搭建Android开发环境

文章目录 下载SDK ManagerAndroid SDK Platform-toolsAndroid SDK Build-toolsAndroid SDKAndroid SDK Extras IDEA设置创建TestApp导入Android Studio创建的项目 下载SDK Manager SDK Manager是Google提供的,专门用于下载/管理,安卓开发中需要用到的工…

CANopen总线_CANOpen开源协议栈

CANopen是自动化中使用的嵌入式系统的通信协议栈和设备配置文件规范。就OSI 模型而言,CANopen 实现了以上各层,包括网络层。 CANopen 标准由一个寻址方案、几个小型通信协议和一个由设备配置文件定义的应用层组成。通信协议支持网络管理、设备监控和节点…

java 解决跨域时遇到问题,怎么来做一个跨域环境

今天遇到一个问题: 关于#java#的问题:java 解决跨域时遇到问题:为什么跨域访问时配置的CorsFilter没有进入?直接访问请求地址时进入了配置的CorsFilter 由于没有实际的跨域环境,因此打算在本机建一个跨域环境&#xff…

Oracle的高级分组函数grouping和grouping_id

在网上对Oracle的高级分组函数grouping和grouping_id的讲解并不多,特别是grouping_id,还有解说有误的。经过1天研究,已经完全掌握了两个函数的作用和用法,下面简单的讲述即可明白。下面给大家分享。 GROUPING 函数 语法:grouping(表达式) 作用: GROUPING将超聚…

庙算兵棋推演AI开发初探(4-调用AI模型)

前面讲了如何开展编写规则脚本型Agent(智能体)的方法,现在探究一下如何调用知识型(一般而言的训练出的模型)智能体的方法。 这次调用的是庙算平台的demo(网址见图) 下载了“知识强化学习型”…