在TFS上运行JMeter多测试仅显示单结果的问题求助
解决TFS流水线中JMeter多测试结果仅显示一条的问题
问题根源
你的脚本存在以下关键问题,导致仅保留最后一个测试的结果:
- JMeter命令使用了
-f参数,会强制覆盖已有的results.jtl文件,循环中后续测试会覆盖之前的结果 - 所有测试共用同一个
results.jtl和reports目录,输出被反复覆盖 - JUnit转换脚本仅处理了最终被覆盖的
results.jtl,生成的XML文件只包含最后一个测试的数据
修改方案
1. 修改FOR LOOP中的执行脚本
为每个测试生成独立的结果文件、报告目录和JUnit XML,避免覆盖:
rem 清理旧结果目录和文件 rmdir /s /q $(System.DefaultWorkingDirectory)\all_reports mkdir $(System.DefaultWorkingDirectory)\all_reports del /f $(System.DefaultWorkingDirectory)\qa\*.jtl del /f $(System.DefaultWorkingDirectory)\qa\*.xml rem 遍历所有JMeter测试文件,生成独立结果 for %%f in ($(System.DefaultWorkingDirectory)\qa\*.jmx) do ( set "test_name=%%~nf" rem 运行JMeter测试,生成独立的jtl和报告目录 C:\apache-jmeter-5.5\bin\jmeter.bat -n -t "%%f" -l "%%~nf.jtl" -e -o "reports_%%~nf" rem 转换为JUnit格式XML python $(System.DefaultWorkingDirectory)\qa\jtl_junit_converter.py "%%~nf.jtl" "%%~nf.xml" rem 复制报告到总目录(可选,用于统一归档) xcopy "reports_%%~nf" "$(System.DefaultWorkingDirectory)\all_reports\%%~nf\" /E /I /Y )
2. 调整「发布测试结果」步骤
在TFS的该步骤中,将测试文件路径设置为:
$(System.DefaultWorkingDirectory)\qa\*.xml
这样会加载所有生成的JUnit XML文件,而非单个文件,Tests标签页就会显示所有测试的结果。
关键注意事项
- 移除JMeter命令中的
-f参数,禁止覆盖已有结果文件 - 用
%%~nf提取不带扩展名的测试文件名,确保每个测试的输出文件唯一 - 如果需要保留独立的HTML报告,可通过xcopy将单个报告目录合并到总目录,方便后续上传或邮件发送
内容的提问来源于stack exchange,提问作者PhilFromLI
相关产品推荐
相关产品推荐

