pytest教程-43-钩子函数-pytest_report_header

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

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

pytest_report_header 钩子函数允许你在 pytest 的终端报告的头部添加自定义信息。这个钩子在生成报告时被调用,通常用于显示测试环境的配置信息、版本信息或其他重要的上下文信息。

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

# conftest.py

import pytest

def pytest_report_header(config):
    # 获取 pytest 配置信息
    env = config.get('env', {})
    version = env.get('MY_APP_VERSION', 'unknown')
    platform = env.get('MY_PLATFORM', 'unknown')
    
    # 创建自定义的报告头部信息
    header_info = (
        f"Testing Environment:\n"
        f"  Application Version: {version}\n"
        f"  Platform: {platform}\n"
        f"  Start Time: {time.ctime()}\n"
    )
    
    # 返回自定义的报告头部信息
    return header_info

# 你可以在 pytest.ini 文件中设置环境变量,例如:
# [pytest]
# env = MY_APP_VERSION=1.0.0
# env = MY_PLATFORM=development

在这个示例中,我们首先从 config 对象中获取环境变量,这些环境变量包含了应用版本和平台信息。然后,我们创建了一个包含这些信息的字符串,作为自定义的报告头部信息。最后,我们返回这个字符串,它将在 pytest 的终端报告头部显示。

请注意,为了使这个示例工作,你需要在 pytest.ini 文件中设置相应的环境变量,或者在命令行中使用 --env 参数来设置它们。这样,当你运行测试时,pytest_report_header 钩子函数就会读取这些环境变量,并在报告头部显示相应的信息。

这个示例展示了如何使用 pytest_report_header 钩子函数来增强 pytest 的报告,使其包含更多关于测试环境的信息。在实际应用中,你可以根据需要添加或修改头部信息的内容。

在这个更复杂的示例中,我们将使用 pytest_report_header 钩子函数来展示如何集成多个源的信息,包括环境变量、系统信息和自定义的测试统计数据。我们将在 pytest 的报告头部显示这些信息,以便为测试提供更多的上下文。

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

# conftest.py

import pytest
import os
import platform
import time
from collections import defaultdict

# 假设我们有一个自定义的统计器来跟踪测试结果
class TestStatistics:
    def __init__(self):
        self.passed = 0
        self.failed = 0
        self.skipped = 0

    def increment(self, result):
        if result == "passed":
            self.passed += 1
        elif result == "failed":
            self.failed += 1
        elif result == "skipped":
            self.skipped += 1

    def summary(self):
        return {
            "passed": self.passed,
            "failed": self.failed,
            "skipped": self.skipped
        }

# 全局统计器实例
test_statistics = TestStatistics()

def pytest_runtest_logreport(report):
    # 更新测试统计数据
    if report.passed:
        test_statistics.increment("passed")
    elif report.failed:
        test_statistics.increment("failed")
    elif report.skipped:
        test_statistics.increment("skipped")

def pytest_report_header(config):
    # 获取系统信息
    system_info = platform.platform()
    
    # 获取环境变量
    env_vars = ", ".join([f"{key}={value}" for key, value in os.environ.items() if key.startswith('TEST_')])
    
    # 获取自定义的测试统计数据
    stats_summary = test_statistics.summary()
    
    # 创建自定义的报告头部信息
    header_info = (
        f"Testing Report Header\n"
        f"System: {system_info}\n"
        f"Environment Variables: {env_vars}\n"
        f"Test Statistics:\n"
        f"   Passed: {stats_summary['passed']}\n"
        f"   Failed: {stats_summary['failed']}\n"
        f"   Skipped: {stats_summary['skipped']}\n"
        f"   Total: {stats_summary['passed'] + stats_summary['failed'] + stats_summary['skipped']}\n"
        f"Start Time: {time.ctime()}\n"
    )
    
    # 返回自定义的报告头部信息
    return header_info

# 在 pytest 运行结束时重置统计器
def pytest_sessionfinish(session, exitstatus):
    test_statistics = TestStatistics()

在这个示例中,我们首先定义了一个 TestStatistics 类来跟踪测试结果。在每个测试用例执行后,我们通过 pytest_runtest_logreport 钩子函数更新统计数据。

然后,在 pytest_report_header 钩子函数中,我们收集了系统信息、环境变量和自定义的测试统计数据。我们将这些信息组合成一个多行字符串,作为报告的头部信息。这个字符串包含了系统平台、环境变量、测试统计数据和测试开始时间。

请注意,为了使这个示例工作,你需要在 pytest.ini 文件中设置相应的环境变量,或者在命令行中使用 --env 参数来设置它们。此外,你可能需要在测试运行结束后重置统计器,以避免在连续运行多个测试时统计数据相互干扰。

这个示例展示了如何使用 pytest_report_header 钩子函数来创建一个包含丰富信息的测试报告头部。在实际应用中,你可以根据需要添加或修改头部信息的内容,以及如何集成和展示测试统计数据。

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

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

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

相关文章

....comic科学....食用手册....

1.点击链接后,保存漫画至夸克网盘,若是新用户需要用手机注册. 2.在应用商店下载夸克APP. 3.登录APP下载已保存的漫画. 3.1 进入APP点击 夸克网盘 3.2 点击“转存的内容”后,长按 漫画文件夹,点击下载,下载速度400K左…

在Linux操作系统中扩建swap容量

在Linux操作系统上创建硬盘分区不仅可以储存数据,还可以使用创建的硬盘分区去扩展机器上swap分区的大小——去扩展交换工具的容量。 有些软件对于swap分区的大小是有要求的,swap分区的大小小于多少就安装不上软件。 要扩展swap容量要么重装系统&#x…

黑啤:浓郁与深邃的完善整合

啤酒的世界丰富多彩,而黑啤作为其中的一种与众不同风格,以其浓郁的口感和深邃的色泽备受瞩目。Fendi club黑啤作为精酿啤酒的代表,将浓郁与深邃完善整合,为消费者带来了与众不同的味蕾盛宴。 首先,Fendi club黑啤在原料…

Zabbix5.0——安装与部署

目录 一、zabbix-server(192.168.206.134) 监控方 1. 环境准备 2.安装zabbix 2.1 准备zabbix-repo 2.2清理缓存 2.3安装zabbix主包(服务器和代理) 2.4安装zabbix前端包 3. 数据库安装 3.1 授权zabbix账号 3.2导入数据库(初始化zabbix&#x…

【多客开源】游戏陪玩系统,游戏陪玩源码,游戏陪玩语音社交源码运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

介绍 我们针对陪玩app源码市场的发展趋势,整合市面上主流陪玩app应用功能,自主开发了多客陪玩系统源码,并可为客户提供全部原生陪玩源码,进行二次开发,打造适用于线上游戏陪玩、语音聊天、心理咨询、情感陪伴等业务场…

SpringBoot之Zuul服务

概述 Spring Cloud Netflix zuul组件是微服务架构中的网关组件,Zuul作为统一网关,是所有访问该平台的请求入口,核心功能是路由和过滤。 目前公司业务就是基于Zuul搭建的网关服务,且提供的服务包括转发请求(路由)、黑名单IP访问拦截、URL资源访问时的权限拦截、统一访问日志记…

在windows下使用VS Code、CMake、Make进行代码编译

软件环境 Windows11VS CodeNoneCMake3.26.4-windows-x86_64MinGWNone 电脑系统配置 安装MinGW将MinGW安装文件夹中bin文件夹下的mingw32-make.exe复制并重命名为make.exe在文件夹中添加系统路径,具体位置为 系统->系统信息->高级系统设置->高级->环境…

马化腾用“不负众望”,来评价视为“全村希望”的视频号

我是王路飞。 2023年的视频号,给了腾讯足够的惊喜。 去年一年,视频号电商GMV实现近3倍增长(约为1200亿~1500亿)。2023年三季度,视频号总播放量同比增长超50%; 2023年视频号供给数量同比增长超…

【python】模拟巴特沃斯滤波器

巴特沃斯滤波器(Butterworth Filter),以其设计者斯蒂芬巴特沃斯(Stephen Butterworth)的名字命名,是一种具有平滑频率响应的滤波器。这种滤波器在频域中具有非常平坦的无波纹响应,直到它达到截止…

一文了解CloudXR优势及应用原理

CloudXR是一种新颖而先进的技术,旨在将虚拟现实和增强现实体验从本地设备转移到云端,主要功能也包括了远程渲染、流媒体传输、低延迟、高带宽和高质量的音视频传输。CloudXR(云化XR)可以将高保真度的虚拟现实或增强现实场景实时传…

线程的常见方法

线程的常见方法 休眠: 让当前状态不再参与cpu的竞争,直到休眠结束; 结果:并不是完全交替进行的,因为只是休眠状态,也会存在争抢cpu 放弃: 让当前状态主动放弃时间片,下次再去争抢…

如何在PPT中插入网页?这样操作,免费还高效!

融合课、跨学科课,已经是近两年来教育界的热门词。 在公开课、微课比赛中,不添融合一些较为先进的信息技术,都不好意思拿出手了。 最近,由不坑老师开发制作的Office插件——不坑盒子,实现了在PPT中插入网页&#xff…

[性能优化] ScrollView视图优化为循环列表

问题描述: 原先商城的物品栏中的item 是load在一个scrollView 下,用于滑动查看。仅仅在父级panel下是使用了NGUI原生的scrollview 组件,随着商场物品列表中新物品的增多。panel下加载的实例也非常庞大。而大部分的实例用户也无法看到&#x…

es使用遇到的bug总结

本来版本7.4.0不行,最后换了个版本7.15.1就可以了,但又出现以下问题了: Beanpublic ElasticsearchClient elasticsearchClient() { // RestClient client RestClient.builder(new HttpHost("localhost", 9200,"http&q…

Duplicate entry ‘asdfg‘ for key ‘clazz.name‘

Mybatis:java.sql.SQLIntegrityConstraintViolationException:Duplicate entry ‘asdfg’ for key ‘clazz.name’ 违反了数据库的唯一约束条件,即插入数据的时候具有唯一约束(被unique修饰)的列值重复了 在修改的过程中发生错误,…

一文玩转Vue3参数传递——全栈开发之路--前端篇(8)

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

ORA-02020:过多的数据库链接在使用

一、问题描述 今天同事说,有一个查询功能,同时查了几个子平台的dblink,页面返回报错。 提示ORA-02020:过多的数据库链接在使用; bad SQL grammar 二、解决办法 1)分析业务需求 分析业务场景 ,发…

基于Vue3与ElementUI Plus的酷企秀场景可视化DIY设计器:前端技术引领下的数字化展示新篇章

一、引言 在当今信息化高速发展的时代,企业对于展示自身形象、提升用户体验以及增强品牌知名度的需求日益迫切。针对这一市场需求,我们推出了基于Vue3与ElementUI Plus的酷企秀场景可视化DIY设计器。该产品不仅具备电子画册、VR全景、地图秀三大核心功能…

Mybatis存储数据将数据转为json

第一种方法 先创建一个表类型如下 创建一个项目&#xff0c;写一个接口 &#xff0c; 写一个JsonTypeHandler类继承BaseTypeHandler public class JsonTypeHandler<T> extends BaseTypeHandler<T> {private Class<T> clazz;//构造函数 --- >接收一个 Cl…

大数据Scala教程从入门到精通第五篇:Scala环境搭建

一&#xff1a;安装步骤 1&#xff1a;scala安装 1&#xff1a;首先确保 JDK1.8 安装成功: 2&#xff1a;下载对应的 Scala 安装文件 scala-2.12.11.zip 3&#xff1a;解压 scala-2.12.11.zip 4&#xff1a;配置 Scala 的环境变量 在Windows上安装Scala_windows安装scala…
最新文章