如何在不同场景下从同一请求获取并存储对应变量的JSON响应data值
按场景单独保存JSON响应中的data值
要实现按不同场景单独保存响应里的data值,你需要把逻辑放在JSR233后置处理器中(前置处理器在请求发送前执行,无法获取响应内容),具体实现步骤如下:
核心代码实现
// 导入Groovy JSON解析工具 import groovy.json.JsonSlurper // 获取已定义的场景变量 def currentScenario = vars.get("Scenario") // 获取当前请求的响应文本 def responseBody = prev.getResponseDataAsString() // 解析JSON响应内容 def jsonParser = new JsonSlurper() def parsedResponse = jsonParser.parseText(responseBody) // 提取响应中的data值 def targetData = parsedResponse.data // 根据场景保存到对应变量 // 方式1:固定场景名称匹配(适合场景数量固定的情况) switch(currentScenario) { case "场景A": vars.put("ScenarioA_Data", targetData) break case "场景B": vars.put("ScenarioB_Data", targetData) break case "场景C": vars.put("ScenarioC_Data", targetData) break default: // 处理未预设的场景,可选 vars.put("UnmatchedScenario_Data", targetData) } // 方式2:动态生成变量名(适合场景名称不固定的情况) // vars.put("${currentScenario}_Data", targetData)
关键说明
prev.getResponseDataAsString():获取当前采样器的响应内容,这是后置处理器中获取响应的标准方式。JsonSlurper:Groovy内置的JSON解析工具,能快速将JSON文本转换为可直接访问的对象。- 变量保存:
vars.put()方法会将值存入JMeter变量,后续测试元件可以通过${变量名}直接引用。- 方式1适合场景名称固定的情况,逻辑清晰;方式2无需逐个匹配场景,直接根据
Scenario变量值生成对应的存储变量(比如Scenario值为"Pay",则生成Pay_Data变量)。
- 方式1适合场景名称固定的情况,逻辑清晰;方式2无需逐个匹配场景,直接根据
注意事项
- 确保JSR233后置处理器与需要处理的请求关联(放在请求的子节点下)。
Scenario变量的取值要与代码中的匹配值完全一致(包括大小写、空格),否则会进入default分支。
内容的提问来源于stack exchange,提问作者Madhu Manohar
相关产品推荐
相关产品推荐

