如何通过命令行生成仅包含K6测试最终指标的HTML报告?
命令行生成仅含测试最终指标的HTML报告方案
完全可以通过命令行工具组合实现需求,无需依赖handle summary回调函数,核心思路是提取标准输出中的指标数据,再将数据转换成HTML格式,具体步骤如下:
1. 过滤提取测试指标
先用文本处理工具(如grep、awk)从测试命令的标准输出中过滤出你需要的最终指标。假设你的测试命令是run-test-suite,输出里包含类似Total Passed: 98、Failure Rate: 2%、Test Duration: 120s这类关键行,可以用:
run-test-suite | grep -E "Total Passed|Failure Rate|Test Duration"
如果需要先把指标临时保存到文件,再加>重定向:
run-test-suite | grep -E "Total Passed|Failure Rate|Test Duration" > raw-metrics.txt
2. 转换为HTML报告
用awk或者Here Document把提取到的指标转换成简单的HTML结构。以下是两种常用方式:
方式一:基于临时文件生成HTML
awk ' BEGIN { print "<!DOCTYPE html>" print "<html lang=\"zh-CN\">" print "<head><meta charset=\"UTF-8\"><title>测试最终指标</title></head>" print "<body><h1>测试最终指标</h1><ul>" } { print "<li>" $0 "</li>" } END { print "</ul></body></html>" }' raw-metrics.txt > test-metrics-report.html
方式二:一步到位(无需临时文件)
把指标提取和HTML生成合并成一条命令:
run-test-suite | grep -E "Total Passed|Failure Rate|Test Duration" | awk ' BEGIN { print "<!DOCTYPE html>" print "<html lang=\"zh-CN\">" print "<head><meta charset=\"UTF-8\"><title>测试最终指标</title></head>" print "<body><h1>测试最终指标</h1><ul>" } { print "<li>" $0 "</li>" } END { print "</ul></body></html>" }' > test-metrics-report.html
3. 适配JSON格式的测试输出
如果你的测试工具支持输出JSON格式的指标(比如run-test-suite --output json),可以用jq工具更精准地提取和转换:
run-test-suite --output json | jq -r ' "<html lang=\"zh-CN\">", "<head><meta charset=\"UTF-8\"><title>测试指标</title></head>", "<body><h1>测试最终指标</h1><ul>", (.testMetrics[] | "<li>\(.metricName): \(.metricValue)</li>"), "</ul></body></html>" ' > test-metrics-report.html
这种纯命令行的方式完全不需要修改代码,通过基础工具的组合就能快速生成仅含核心指标的HTML报告,灵活适配不同的测试输出格式。
内容的提问来源于stack exchange,提问作者Yadhav
相关产品推荐
相关产品推荐

