如何在Jenkins pipeline运行JMeter时记录失败请求的相关信息?
JMeter仅失败请求记录配置方案
完全可以实现该需求,以下是两种适配Jenkins pipeline运行场景的配置方式:
方式一:全局配置(无需修改测试脚本)
直接调整JMeter的服务配置即可全局生效:
- 找到JMeter安装路径下的
bin/jmeter.properties配置文件,修改以下参数:# 配置错误日志级别 log_level.jmeter.threads.JMeterThread=ERROR log_level.jmeter.protocol.http=ERROR # 配置结果保存格式与字段 jmeter.save.saveservice.output_format=csv jmeter.save.saveservice.timestamp_format=yyyy-MM-dd HH:mm:ss.SSS jmeter.save.saveservice.timestamp=true jmeter.save.saveservice.url=true jmeter.save.saveservice.samplerData=true jmeter.save.saveservice.requestHeaders=true jmeter.save.saveservice.responseHeaders=true jmeter.save.saveservice.responseData=true jmeter.save.saveservice.assertion_results_failure_message=true # 核心配置:仅保存失败的请求结果 jmeter.save.saveservice.only_save_errors=true - 重启JMeter后生效,后续Jenkins运行测试时,所有失败请求的相关数据都会自动写入指定的结果文件,可直接在Jenkins pipeline中配置归档该文件即可。
方式二:脚本内置后置处理器(按需自定义记录)
如果只需要针对部分采样器做失败记录,不需要全局生效,可以在对应采样器下添加JSR223后置处理器,填入以下Groovy代码:
// 判断请求是否执行失败 if (!prev.isSuccessful()) { // 构造自定义日志内容 def errorLog = """ 时间戳:${new Date().format("yyyy-MM-dd HH:mm:ss.SSS")} 请求地址:${prev.getUrl()} 请求方法:${prev.getHTTPMethod()} 请求载荷:${prev.getQueryString() ?: prev.getSamplerData()} 响应状态码:${prev.getResponseCode()} 错误信息:${prev.getResponseMessage()} """ // 写入自定义错误日志文件,路径可配置为Jenkins工作目录方便归档 new File("${System.getProperty("user.dir")}/jmeter_api_error.log") << errorLog + "\n" + "=".repeat(60) + "\n" }
该方式灵活度更高,可自定义需要记录的字段,也可以调整代码直接将错误信息输出到控制台,方便Jenkins pipeline直接捕获触发告警。
内容的提问来源于stack exchange,提问作者Vikash Jain
相关产品推荐
相关产品推荐

