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.hqwc.cn/news/696821.html

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

相关文章

汇聚荣科技:拼多多开店时后期押金可以退吗?

在电商领域,拼多多以其独特的团购模式迅速崛起,吸引了众多商家入驻。对于这些商家而言,了解平台的各项费用政策尤为重要,其中押金的退还问题是大家关注的焦点之一。那么,拼多多开店时后期押金可以退吗?答案是肯定的。…

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式: 当键盘按ctrlc的时候,切换消息读取方式,一般情况为读取指定编号的消息,按ctrlc之后,指定的编号不读取,读取其他所有编号的消息…

simulink-仿真以及PID参数整定/PID tuner 的使用流程

控制器搭建与参数整定 搭建一个前馈PID控制器控制系统PID tuner使用 一个懂点控制但不多的小白,因为需要利用simulink仿真,所以不得不学习一些仿真的知识,这篇文章适合和我一样的新手入门,有理解错误的地方希望大手们能够指出来共…

车载电子电器架构 —— UDS Service 11介绍

车载电子电器架构 —— UDS Service 11介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…

Spring:@Async注解使用注意事项及九大失效场景

前言 原文作者:微信公众号:苏三说技术 场景举例 代码案例 点击此处可观看:Async注解使用注意事项及九大失效场景

【Qt 开发基础体系】QMap 类和 QHash 类以及 QVector 类

文章目录 1.QMap 详解1.1 QMap 的介绍1.2 QMap 的具体用法如下1.3 QmultiMap类 2.QHash 详解3. QMap 和 QHash 的对比4. QVector 详解 1.QMap 详解 1.1 QMap 的介绍 &#x1f427;① QMap<key,T>提供一个从类型为Key的键到类型为T的值的映射。通常&#xff0c;QMap存储的…

【QT】QT环境搭建

本专栏内容为&#xff1a;QT学习专栏 通过本专栏的深入学习&#xff0c;你可以了解并掌握QT。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;QT &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f…

车载电子电器架构 —— Vector对于车载以太网的解决方案(协议栈)

车载电子电器架构 —— Vector对于车载以太网的解决方案(协议栈) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你…

[算法][BFS][leetcode]994. 腐烂的橘子

题目地址 https://leetcode.cn/problems/rotting-oranges/description/ 错误解法 class Solution {public int orangesRotting(int[][] grid) {//层序遍历int ans 0;for (int i 0;i<grid.length;i) {for(int j 0;j<grid[0].length;j){boolean flag false;if(grid[i][j…

3.使用uView让tabbar更优雅

文章目录 1. 使用uView让tabbar更优雅1.1. 怎么才优雅&#xff1f;1.2. uView的tabbar合适吗&#xff1f;1.3. 引入项目过程1.3.1. 修改pages.json1.3.2. 把demo里面的pages先拷贝过来1.3.3. 引入tabbar的图片1.3.4. 运行 1.4. 我们自己的项目适配 1. 使用uView让tabbar更优雅 …

GEE数据集——东南亚区域油棕种种植分布(油棕榈树种植园的概率)数据集

森林数据伙伴关系围绕对全球商品驱动的森林砍伐、森林退化和恢复工作的全球监测&#xff0c;加强合作与应用。 世界各国政府和公司都承诺帮助制止砍伐森林和加快恢复&#xff0c;以避免气候变化带来的最坏影响&#xff0c;防止生物多样性丧失&#xff0c;保护森林对人类和自然…

汇昌联信电商:拼多多新手怎么做店铺的免费流量会慢慢起来?

在拼多多上开店&#xff0c;新手们往往面临着如何吸引免费流量的挑战。毕竟&#xff0c;流量是店铺生存和发展的血脉&#xff0c;没有流量&#xff0c;就没有销量&#xff0c;店铺也就失去了生命力。那么&#xff0c;作为拼多多新手&#xff0c;如何做才能让店铺的免费流量慢慢…