如何让JMeter也生成精美详细allure测试报告

news2024/11/17 9:47:01

(全文约2000字,阅读约需5分钟,首发于公众号:测试开发研习社,欢迎关注)

内容目录:

  • 一、需求

  • 二、思路

  • 三、验证

  • 四、实现

  • 五、优化

  • 六、彩蛋

篇幅较长,建议先收藏后阅读


一、需求

jmeter 根据使用场景,大概可以分为两种:

第一种是性能测试,报告内容侧重展示数据(响应速度、失败数量、中位数等)

第二种是接口测试,更关心用例失败的原因,报告内容应该侧重展示请求 / 响应详情、断言失败详情等

但是比较可惜的是,目前市面上大部分 jmeter 的测试报告都以性能测试为主,适合接口测试的不多,好看的更是少之又少。

于是在接口测试(而不是性能测试)场景下,

迫切需要一个好看、通用、能够展示用例失败原因的 HTML 测报告。

脑海中第一个想到的就是 allure,

本文将记录【让 JMeter 生成 Allure 测试报告】的思路、步骤、和成果

二、思路

allure 内置了一个插件,其描述为:

The plugin that adds support for results in JUnit.xml data format.

翻译过来大意是:

支持 JUnit.xml 格式的结果

我们在使用 pytest 生成 alluer 报告时,生成的结果文件是 json 格式的

从这个插件描述来看,json 不是唯一的选择,JUnit 的 xml 格式也被支持。

JUnit 作为一个非常非常老牌的测试框架,其影响力巨大。

与测试相关的各种不同类型、方向的工具或框架,

大都有意保持了对 JUnit 格式的兼容,比如 Jenkins、pytest、testlink 等

既然allure也支持Junit,

于是一个为【JMeter 生成 allure 报告】的思路逐渐清晰起来:

JMeter - > JUnitxml -> allure

三、验证

01.JMeter 生成 xml

默认情况下,JMeter 生成的结果是 csv 格式,可以改为 xml 格式内容如下

图片

JMeter 生成 xml 格式结果内(双击放大)

虽然是 xml,却不是 JUnit 格式的 xml,所以后续还需要对其进行处理。

在花费功夫处理之前,先快速验证思路是否可行,免得撞南墙才发现路子根本不对,浪费时间和精力

02.pytest 生成 JUnitxml

这里,我们借助 pytest 快速生成一个【包含 JUnit.xml 文件的目录】

执行以下命令,启动 pytest 并生成 JUnitxml 格式报告到指定目录

pytest --JUnit-xml results/report.xml

图片

pytest 生成 JUnitxml(双击放大)

图片

JUnitxml 报告内容(双击放大)

至此,我们生成了符合 JUnitxml 要求的 xml 文件,并且存放在 results 目录下。

接下来试试allure能否正确处理

03.allure 处理 JUnitxml

根据前文,尝试执行 allure 命令

allure generate results

果然顺利生成了报告

图片

图片

alluer 根据 JUnitxml 生成 HTML 报告

好了,借助 JUnitXML 为 JMeter 生成 Allure 报告的思路正式通过验证!

接下来完善JMeter的处理,让整件事真正落地实现

四、实现

JMeter 默认生成的结果是 csv 格式,我们需要做的是:

  1. 以 XML 格式来生成

  2. 以 JUnit 的要求来生成

01.JMeter 生成 xml

可以通过修改文件来修改 JMeter 属性

图片

JMeter 属性文件

将原文件中

# JMeter.save.saveservice.output_format=csv

修改为

JMeter.save.saveservice.output_format=xml

也可以在命令行参数中修改 JMeter 属性

JMeter -n -t HTTP_200_404.jmx -l result.xml -JJMeter.save.saveservice.output_format=xml -JJMeter.save.saveservice.response_data=True -JJMeter.save.saveservice.samplerData=True

02.JMeter.xml 转 JUnit.xml

XSLT 可扩展样式表语言转换(xEtensible Stylesheet Language Transformations)定义了如何从一个 XML 文档中提取、转换和呈现数据的格式。

可以将一个 XML 文档转换为其他格式,例如 HTML、XML 或 TXT。

JMeter 执行后生成的 xml 文件原始内容如下

图片

JMeter 生成 xml

编写 xslt 文件如下

图片

xslt 指定 xml 转换规则

使用 python 完成 xslt 转换

图片

python 执行 xslt 规则

顺利生成 JUnit.xml!

图片

xlst 生成的 JUnit.xml

03.allure 处理 JUnitxml

allure generate results

图片

alluer 根据 JUnitxml 生成 HTML 报告

图片

alluer 根据 JUnitxml 生成 HTML 报告

可以看到 allure 报告中增加了一组 Suites:httpSample,内容正是 JMeter 执行结果

不过,

在 JMeter 中【HTTP 404】的结果为失败

在 allure 中却都显示为通过

说明还有再优化的空间

五、优化

目前而言,我觉得有以下几个方面值得优化:

  1. 正确判断、显示用例状态是成功还是失败

  2. 在 allure 中显示失败的原因或细节

  3. 将执行 JMeter、生成 JUnitxml、生成 allure report 命令合三为一

  4. 使用纯 java 实现,不再依赖 python

01.修改 xslt 转换规则

图片

优化后的 JUnit.xml 显示更丰富(双击放大)

JMeter 根据执行结果,在 allure 有 3 种状态:

  1. passed:绿色,取样成功

  2. broken:黄色,取样失败,可查看响应结果

  3. Failed:红色,断言失败,可查断言详情

02.使用 java 执行 xslt 转换

创建 java 代码,代替 python 代码

图片

java 执行 xslt 规则

执行方式

java XSLTProcessor JMeter.xml to_JUnit.xsl JUnit.xml

03.使用 ant 执行多个命令

Ant (Another Neat Tool) 一个用于自动构建和部署 Java 项目的构建工具,和 JMeter 同属于是 Apache 软件基金会。

在我看来,它相当于是一个跨平台的脚本,可以在 windows、linux、macOS 等不同的环境中,使用完全相同的方式(也就是 XML 文件)来编写脚本。

创建 Ant 构建工程如下

图片

JMeter_to_allure 工程结构(双击放大)

把 JMeter 脚本放入 jmx 目录

然后回到 build.xml 旁边,

执行 ant 命令即可自动完成一系列动作

图片

Ant执行结果(双击放大)

现在,可以到 out/report 目录中收获 HTML 报告啦!

图片

优化后的 JUnit.xml 显示更丰富(双击放大)

大功告成!

为了给 JMeter 生成 allure 测试报告,前后多日查询了大量资料,

根据碎片信息探索出一个可行的方案,并不断调整最终落地成功,确实不易。

全过程已通过本文分享出来了,如果对你有帮助,还请点赞、分享。

对本文赞赏过的朋友记得加我微信,奉上优化后 Ant 构建工程文件,多多交流继续改进

六、彩蛋

01. 只要支持 JUnit 一切即可 Allure

本文实践证明:不论是哪款测试工具,只要能够生成 JUnitxml 格式的结果(比如 postman,unittest),都可以按此思路生成 allure 报告

任意测试工具 ->JUnit.xml -> Allure 测试报告

02. chatgpt 虽好,可不能盲目信任

图片

03. allure 也可以在 Email 中查看了

allure 在版本 2.24.0 加入一个新的参数 --single-file

将报告生成为单个 HTML 文件,可作为附件发送到 Emial 中

allure generate results --single-file --clean

图片

单文件HTML报告

手机下载后打开浏览效果如下(android chrome)

图片

可以正常点击、滑动、切换、缩放等操作,查看内容没有问题

但是没有看到语言切换的按钮,只有英文内容

(全文完)

原创不易,喜欢请星标+点赞+在看,关注公众号《测试开发研习社》,不错过技术干货,谢谢鼓励!

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

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

相关文章

Java项目:42 ssm的高校专业信息管理系统设计与实现001

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统可以提供信息显示和相应服务 管理员查看学生报名专业,管理专业,课程以及学生,查看学生提问并回答问题&#x…

飞驰云联CEO朱旭光荣获“科技领军人才”称号

2024年2月29日,苏州工业园区“优化营商环境暨作风效能建设大会”成功举办,会上公布了2023年度苏州工业园区第十七届第一批金鸡湖科技领军人才名单,Ftrans飞驰云联创始人兼CEO朱旭光先生凭借在数据安全以及文件交换领域取得的突出成果&#xf…

浅谈高并发的一些解决思路

前言 《中国互联网发展状况统计报告》指出,截至2020年6月,我国网民规模已经达到9.40亿,较2020年3月年增长3625万,除了如此庞大的用户基数,如今人们接入互联网的方式也越来越多样,小到智能手表,…

MySQL存储函数

存储函数是有返回值存储过程,存储函数的参数只能还是IN类型的 1、语法 create function 存储函数名称 ([参数列表])Returns type [characterrastic...]Begin--SQL语句Return ..;End;characterrastic说明:Deterministic:相同的输…

纯css实现太极八卦图

感觉最近好像闯鬼了&#xff0c;赶紧写个八卦图避避邪&#xff0c;开玩笑了&#xff0c;不废话&#xff0c;上菜&#xff0c;看效果上代码。 效果 代码&#xff0c;你们都是大佬&#xff0c;这里就不解释代码了 &#xff08;hover会转动喔&#xff09;。 <!DOCTYPE html&g…

Linux:kubernetes(k8s)探针LivenessProbe的使用(9)

他做的事情就是当我检测的一个东西他不在规定的时间内存在的话&#xff0c;我就让他重启&#xff0c;这个检测的目标可以是文件或者端口等 我这个是在上一章的基础之上继续操作&#xff0c;我会保留startupProbe探针让后看一下他俩的执行优先的一个效果 Linux&#xff1a;kuber…

图机器学习(3)-连接层面的特征工程

0 问题定义 通过已经连接去猜未知连接&#xff1a; 有两个思路&#xff1a;

金融行业专题|基金超融合架构转型与场景探索合集(2023版)

更新内容 更新 SmartX 超融合在基金行业的覆盖范围、部署规模与应用场景。更新信创云资源池、关键业务系统性能优化等场景实践。更多超融合金融核心生产业务场景实践&#xff0c;欢迎下载阅读电子书《金融核心生产业务场景探索文章合集》。 随着数字化经济的蓬勃发展&#xf…

WPF 消息提示 类似toast方式

WPF里面的消息提示一般都是MessageBox.Show()&#xff0c;这种样式不是很好看&#xff0c;所以就想办法重新搞了一个类似弹出消息的功能。原理很简单&#xff0c;就是弹出一个新窗体&#xff0c;然后等几秒窗体自动关闭。 先上效果图&#xff1a; 新建一个MsgHelper.cs类&…

板绘学习路线、技巧和日常练习-----线条基础(点线面)---持续补充

板绘学习路线、技巧和日常练习-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/136199248 虽然PS画线条可以用快捷键画&#xff0c;但是太AI了。我们需要线条包含更多的人性。所以通过我们心-脑-手&#xff0c;这样…

腾讯云2024年云服务器优惠价格表,不买后悔!

腾讯云服务器多少钱一年&#xff1f;61元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器165元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

滤波器:工作原理和分类及应用领域?|深圳比创达电子EMC

滤波器在电子领域中扮演着重要的角色&#xff0c;用于处理信号、抑制噪声以及滤除干扰。本文将详细介绍滤波器的工作原理、分类以及在各个应用领域中的具体应用。 一、滤波器的定义和作用 滤波器是一种电子设备&#xff0c;用于选择性地通过或阻塞特定频率范围内的信号。其主…

【小黑送书—第十一期】>>如何阅读“计算机界三大神书”之一 ——SICP(文末送书)

《计算机程序的构造和解释》&#xff08;Structure and Interpretation of Computer Programs&#xff0c;简记为SICP&#xff09;是MIT的基础课教材&#xff0c;出版后引起计算机教育界的广泛关注&#xff0c;对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。…

MySQL的事务隔离级别介绍

我将为您详细讲解 MySQL 的事务隔离级别&#xff0c;并给出相应的简单例子。事务隔离级别是数据库管理系统中用于控制事务内外的数据一致性和并发性的重要概念。在 MySQL 中&#xff0c;事务隔离级别用于解决并发操作可能产生的问题&#xff0c;如脏读、不可重复读和幻读。 1. …

自然语言处理: 第十三章P-tuing系列之P-tuning V1

项目地址: P-Tuning 论文地址: [2103.10385] GPT Understands, Too (arxiv.org) 理论基础 正如果上一节介绍LoRA(自然语言处理: 第十二章LoRA解读_lora自然英语处理-CSDN博客)一样,本次介绍的在21年由清华团推提出来的 P-Tuning V1系列也属于PEFT(参数高效微调系列)里的一种&…

人类与智能体

1、人类与智能体 人类与智能体之间的关系在当今科技发展中变得日益紧密。智能体&#xff0c;作为人工智能领域的一个核心概念&#xff0c;通常指的是一种能够感知环境、做出决策并采取行动以实现特定目标的实体&#xff0c;它可以是软件系统、机器人或其他类型的自动化装置。 …

Java代码审计安全篇-目录穿越漏洞

前言&#xff1a; 堕落了三个月&#xff0c;现在因为被找实习而困扰&#xff0c;着实自己能力不足&#xff0c;从今天开始 每天沉淀一点点 &#xff0c;准备秋招 加油 注意&#xff1a; 本文章参考qax的网络安全java代码审计&#xff0c;记录自己的学习过程&#xff0c;还希望各…

离散数学——(3)联结词及对应的真值指派,最小全功能联结词集,对偶式,范式,范式存在定理,小项

目录 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项

大宗商品现货系统开发撮合交收制度说明

大宗商品现货系统的撮合交收制度是其交易机制的核心部分&#xff0c;确保了交易的顺利进行和市场的公平、公正。以下是该制度的主要说明&#xff1a; 撮合原则&#xff1a; 大宗商品现货系统通常采用价格优先、时间优先的撮合原则。价格优先意味着报价最高的买方和报价最低的…

气相白炭黑外资垄断格局被打破 国内本土企业数量增加

气相白炭黑外资垄断格局被打破 国内本土企业数量增加 气相白炭黑又名气相二氧化硅&#xff0c;是一种无毒、无味、无嗅&#xff0c;无污染的非金属氧化物&#xff0c;主要由硅的卤化物在氢氧火焰中高温水解生成的带有表面羟基和吸附水的无定形的纳米级颗粒。气相白炭黑主要用于…