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

(全文约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 快

要使用 JMeter 生成 Allure 测试报告,需要通过特定的插件和配置将 JMeter 的测试结果转换为 Allure 支持的格式。以下是实现这一目标的主要步骤: ### 准备工作 首先,确保安装了以下工具: - **JMeter**:用于执行性能测试。 - **Allure Framework**:用于生成美观且详细测试报告。 - **JMeter Plugins Manager**:用于安装额外的插件。 - **Allure JMeter 插件**:用于将 JMeter 的测试结果转换为 Allure 可识别的格式。 ### 配置与步骤 #### 1. 安装 Allure JMeter 插件 可以通过 JMeter Plugins Manager 来安装 Allure 插件。打开 JMeter Plugins Manager,搜索 `Allure` 并安装相关的插件[^2]。 #### 2. 修改 JMeter 属性 在运行 JMeter 测试时,需要指定一些属性来确保输出的数据足够详细,以便 Allure 能够解析并展示。可以在命令行中添加如下参数: ```bash JMeter -n -t your_test_plan.jmx -l result.xml -JJMeter.save.saveservice.output_format=xml -JJMeter.save.saveservice.response_data=True -JJMeter.save.saveservice.samplerData=True ``` 这些参数的作用是启用 XML 格式的输出,并包含响应数据和采样器数据[^2]。 #### 3. 执行 JMeter 测试 运行 JMeter 测试计划,这将会生成一个包含所有必要信息的 XML 文件(例如 `result.xml`)。 #### 4. 转换测试结果 使用 Allure 提供的工具或脚本将 JMeter 生成的 XML 文件转换为 Allure 可以读取的 JSON 格式。这个过程通常涉及解析 JMeter 的 XML 输出文件,并将其映射到 Allure 的报告结构中[^3]。 #### 5. 生成 Allure 报告 一旦有了 Allure 可以识别的 JSON 文件,就可以使用 Allure CLI 工具来生成最终的 HTML 报告。导航到包含 JSON 文件的目录,然后运行以下命令: ```bash allure serve . ``` 这条命令会启动一个本地服务器,并在浏览器中打开生成的报告页面[^1]。 ### 示例代码片段 如果你希望手动处理 JMeter 的输出并转换为 Allure 需要的格式,可以参考下面的 Python 脚本示例,它展示了如何读取 JMeter 的 XML 输出并写入 Allure 兼容的 JSON 文件: ```python import xml.etree.ElementTree as ET import json def parse_jmeter_xml(file_path): tree = ET.parse(file_path) root = tree.getroot() testsuites = [] for test in root.findall('testcase'): testsuite = { "name": test.attrib['name'], "time": test.attrib['time'], "status": test.find('status').text, # 更多字段可以根据需求添加 } testsuites.append(testsuite) return testsuites def write_allure_json(data, output_file): with open(output_file, 'w') as f: json.dump(data, f, indent=4) if __name__ == "__main__": jmeter_data = parse_jmeter_xml('path_to_your_jmeter_output.xml') write_allure_json(jmeter_data, 'allure_results.json') ``` ### 注意事项 - 确保 JMeterAllure 的版本兼容性。 - 在生产环境中,可能还需要考虑错误处理、日志记录等功能。 - 如果遇到任何问题,检查 JMeter 的日志和 Allure 的文档可能会有所帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值