jmeter 修改 json GET 结果并在 PUT 中使用

jmeter modify json GET result and use in PUT

本文关键字:PUT 修改 json GET 结果 jmeter      更新时间:2023-09-26

我正在使用Jmeter来自动化一些测试用例。 我有一个来自 GET 的 JSON 响应,我想更改该 JSON 响应的单个值,并在 PUT 正文中使用修改后的响应。 PUT 需要与响应相同的所有字段,我不知道它们都是什么,所以我认为 JSON 路径提取器在我的情况下不起作用。 效率在这里是一个加分项,但我会满足于一些有用的东西。
我已经在BSF后处理器中尝试过这个javascript:

var response = SampleResult.getResponseDataAsString();
var jsonOutput = JSON.parse(response);
jsonOutput.configState = "DELETED";
vars.put("json",jsonOutput);

但调试采样器将响应显示为"对象",仅此而已。 有什么想法吗? 谢谢。

我认为你在 Rhino 或 Nashorn 中没有JSON,这就是你的脚本失败的原因。我建议考虑切换到JSR223 PostProcessor,并使用JSONBuilder和JSONSlurper,如下所示:

import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
def slurped = new JsonSlurper().parseText(SampleResult.getResponseDataAsString())
def builder = new JsonBuilder(slurped)
builder.content.configState = 'DELETED'
vars.put("json", builder.toPrettyString()) 

请参阅 Beanshell vs JSR223 vs Java JMeter 脚本:您一直在等待的性能下降! 文章以了解

  • 为什么JSR223和Groovy比JavaScript更好
  • 如何向 Jmeter 添加 Groovy 引擎支持
  • 脚本编写最佳实践