场景:添加 JMeter log 输出,想输入自定义请求的名称
// 获取 response body prev.getResponseDataAsString(); // 获取 HTTP Request 插件里面的 Name prev.getSampleLabel()
补充知识点:
JMeter prev对象核心方法详解
(适用于BeanShell/JSR223脚本环境,prev即SampleResult
对象)
一、基础信息获取方法
// ▶ 请求基本信息 prev.getSampleLabel() // 获取请求显示名称,如:"HTTP Get User" prev.getSampler().getName()// 底层采样器名称,如:"HTTP Request" prev.getThreadName() // 线程组名称,如:"Thread Group 1-1"// ▶ 时间维度数据 prev.getTime() // 请求总耗时(毫秒) prev.getStartTime() // 请求开始时间戳(毫秒) prev.getEndTime() // 请求结束时间戳(毫秒)
二、响应数据处理方法
// ▶ 文本型响应 prev.getResponseDataAsString() // 获取响应正文文本 prev.getResponseHeaders() // 获取完整响应头// ▶ 二进制响应 prev.getResponseData() // 获取byte[]格式响应数据// ▶ 状态码验证 prev.getResponseCode() // HTTP状态码,如:"200" prev.isResponseCodeOK() // 状态码是否2xx(返回boolean)
三、高级调试方法
// ▶ 断言与错误判断 prev.isSuccessful() // 请求是否成功(包含断言结果) prev.getAssertionResults()// 获取断言失败信息数组// ▶ 数据提取 prev.getLatency() // 网络延迟时间(毫秒) prev.getConnectTime() // TCP连接建立耗时(毫秒)
四、典型使用场景示例
// 场景1:记录异常请求详情 if (!prev.isSuccessful()) {errorLog = "失败请求:" + prev.getSampleLabel() + " | 状态码:" + prev.getResponseCode()+ " | 错误信息:" + prev.getResponseMessage()vars.put("ERROR_LOG", errorLog) }// 场景2:计算响应时间占比 def connectPercent = (prev.getConnectTime()/prev.getTime())*100 log.info("TCP连接时间占比:" + connectPercent + "%")
五、关键注意事项
- 作用域限制
- 仅在
PostProcessor
/断言
等后置处理器中有效 - 前置处理器(PreProcessor)中不可用
- 性能建议
- 避免在高并发下频繁调用
getResponseDataAsString() (我拒绝你的建议)
- 大数据响应建议改用
prev.getResponseData().length
获取字节大小
- 替代方案
- JMeter 5.0+推荐使用JSR223+Groovy替代BeanShell
// Groovy等效写法 def responseCode = prev.getResponseCode()