能否仅删除JMeter结果树中指定结果?如何按规则删除500状态码请求?
JMeter 仅删除结果树中500响应码条目的实现方案
GUI 模式运行时动态清理
将以下代码添加到JSR223 Sampler/后置处理器中,语言选择Groovy,按需执行即可仅删除响应码为500的结果:
import org.apache.jmeter.gui.GuiPackage import org.apache.jmeter.reporters.ResultCollector import org.apache.jmeter.samplers.SampleResult def guiPackage = GuiPackage.getInstance() if (guiPackage == null) { log.warn("非GUI模式下无法调用GUI相关接口清理结果树") return } // 获取所有结果收集器(结果树、汇总报告等都属于该类型) def resultCollectors = guiPackage.getTreeModel().getNodesOfType(ResultCollector.class) resultCollectors.each { collectorNode -> def resultCollector = collectorNode.getTestElement() as ResultCollector // 过滤排除响应码为500的采样结果 def validResults = resultCollector.getSampleResults().findAll { it.getResponseCode() != "500" } // 替换原有结果 resultCollector.clearData() validResults.each { resultCollector.addSampleResult(it) } } log.info("500响应码结果清理完成")
非GUI模式生成报告时自动排除
无需修改脚本,直接在jmeter.properties或user.properties中添加如下配置,生成的报告将自动过滤所有500响应码的条目:
jmeter.reportgenerator.exclude_sample_with_response_code=500
可选优化
- 如需仅清理指定名称的结果树,可在遍历
resultCollectors时添加判断:resultCollector.getName() == "你指定的结果树名称" - 如需只删除重试产生的500而非所有500,可在过滤条件中增加请求标识判断(比如请求头的重试标记、请求参数特征等),避免误删有效错误数据
内容的提问来源于stack exchange,提问作者QA_V
相关产品推荐
相关产品推荐

