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

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

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

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

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

# conftest.py

import pytest

def 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.py

import 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python智能电力监控与资费电费缴纳管理系统vue+django

本系统的设计与实现共包含6个表:分别是配置文件信息表,电力记录信息表,故障报修信息表,缴费订单信息表,用户表信息表,用户信息表, 本文所设计的电费缴纳系统的设计与实现拥有前端和后端,前端使…

C++入门必读-Qt的菜单控件

菜单控件 QT提供的菜单控件,可以帮助我们完成如下菜单的制作。这在项目开发中非常有用。 移除默认的菜单 从头开发菜单控件,我们先移除默认的菜单栏。 创建菜单栏 在窗体空白处,鼠标右键点击选择《创建菜单栏》 添加菜单内容 继续输入子菜单,…

有哪些可以用电脑做的挣钱副业,有电脑就行

以下是一些可以用电脑做的挣钱副业 1. 写作和翻译 可以在各大网络平台上接单进行写作或者翻译。 2. 做任务 还在做致米宝库这个软件,软件每天会发布一些项目任务,也能学到一些网上赚钱的知识技术,我平时就做些简单任务和一个虚拟项目。 任…

FPGA+炬力ARM实现VR视频播放器方案,3D眼镜显示

3D眼镜显示: FPGA炬力ARM方案,单个视频源信号,同时驱动两个LCD屏显示,实现3D 沉浸式播放 客户应用:VR视频播放器 主要功能: 1.支持多种格式视频文件播放 2.支持2D/3D 效果实时切换播放 3.支持TF卡/U盘文…

日志的基本用法

目标 1. 掌握如何设置日志级别 2. 掌握如何设置日志格式 3. 掌握如何将日志信息输出到文件中 1. logging模块 Python中有一个标准库模块logging可以直接记录日志 1.1 基本用法 import logging logging.debug("这是一条调试信息") logging.info("这是一条…

【opencv】信用卡号识别实验

实验环境:anaconda、jupyter notebook(其它的ide也行) 实验用的包:numpy、matplotlib、opencv 实验目标: 识别信用卡的卡号 信用卡图片: 数字模板图片: 一、包引入 import cv2 import matplo…

Apollo9.0 Control模块算法源码学习

参考资料 Apollo控制算法_哔哩哔哩_bilibili

JSR303数据校验 —— @Valid嵌套校验、集合校验

1. 依赖版本 (1)SpringBoot 3.1.11 (2)JDK17 2. Valid、Validated 简介 说明:在Spring框架中Valid默认不会对集合(List、Set等)内部的元素进行校验,需要将Spring提供的Validated注…

电信网关配置管理系统 rewrite.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

力扣HOT100 - 118. 杨辉三角

解题思路&#xff1a; 每个数字等于上一行的左右两个数字之和。 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res new ArrayList<>();for (int i 0; i < numRows; i) {List<Integer> …

(done) Beam search

参考视频1&#xff1a;https://www.bilibili.com/video/BV1Gs421N7S1/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 &#xff08;beam search 视频&#xff09; 参考博客1&#xff1a;https://jasonhhao.github.io/2020/06/19/…

鸿蒙ArkUI开发:常用布局【主轴】

ArkUI中常用布局容器 线性布局&#xff08;Row/Column&#xff09; 线性布局的子元素在线性方向上&#xff08;水平方向和垂直方向&#xff09;依次排列线性布局容器包括[Row]和[Column]。Column容器内子元素按照垂直方向排列&#xff0c;Row容器内子元素按照水平方向排列开发…

vc小程序源码:利用opencv 实现九宫格切图

#include "stdafx.h" #include<opencv2/opencv.hpp> using namespace std; using namespace cv;int main() {Mat src imread("福利.png");if (src.empty()){cout << "No Image!" << endl;system("pause");return -…

PCIE协议-2-事务层规范-Completion Rules

2.2.9 完成规则 所有Read、Non-Posted Write和AtomicOp请求都需要完成&#xff08;Completion&#xff09;。完成包含一个完成头标&#xff0c;对于某些类型的完成&#xff0c;完成头标之后会跟随一定数量的DWs数据。完成头标的每个字段的规则在以下各节中定义。 完成通过ID路…

C# WinForm —— 18 NumericUpDown 介绍

1. 简介 数字显示框&#xff0c;通过向上、向下按钮来 增加/减小 显示的数值 2. 常用属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到,一般以 numUD 开头Hexadecimal数值 up-down 控件的值是否应以十六进制显示Increment每单击一下按钮&#xff0c;增加或减…

孙宇晨对话大公网:香港Web3政策友好环境示范意义重大

日前,全球知名华文媒体大公网发布《湾区web3大有可为》重磅系列报道。报道通过对中国香港与大湾区其他城市Web3政策、行业创新和生态建设等方面的梳理,以及对行业领袖和重要行业机构的走访,全面展现了在大湾区一体化发展的背景下,Web3等数字经济模式在该地区的长远发展潜力。 …

ABB机器人程序类型介绍

ABB机器人编程语言为rapid语言&#xff0c;在例行程序中可分为三类&#xff1a;普通程序、功能程序和中断程序。例如新建一个例行程序&#xff0c;会选择一个程序类型&#xff0c;三种类型的区别如下&#xff1a; 1、普通程序&#xff08;procedures&#xff09;&#xff1a;常…

移动 App 入侵与逆向破解技术-iOS 篇

如果您有耐心看完这篇文章&#xff0c;您将懂得如何着手进行app的分析、追踪、注入等实用的破解技术&#xff0c;另外&#xff0c;通过“入侵”&#xff0c;将帮助您理解如何规避常见的安全漏洞&#xff0c;文章大纲&#xff1a; 简单介绍ios二进制文件结构与入侵的原理介绍入…

HUE工具介绍使用

一、HUE工具介绍使用 HUE是CDH提供一个hive和hdfs的操作工具&#xff0c;在hue中编写了hiveSQl也可以操作hdfs的文件 http://hadoop01:9870 hdfs的web访问端口 hdfs://hadoop01:8020 hdfs的程序访问端口 进入hue

基于SpringBoot的垃圾分类网站的设计与实现

一、引言 随着网络不断的普及发展&#xff0c;垃圾分类网站依靠网络技术的支持得到了快速的发展&#xff0c;首先要从用户的实际需求出发&#xff0c;通过了解用户的需求开发出具有针对性的垃圾分类、垃圾图谱等功能&#xff0c;利用目前网络给用户带来的方便快捷这一特点对系统…