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

Gre*_*ith 4 javascript json jmeter

我正在使用Jmeter自动执行一些测试用例。我有一个来自GET的JSON响应,我想更改该JSON响应的单个值,并在PUT主体中使用修改后的响应。PUT需要与响应相同的所有字段,而且我也不知道它们都是什么,因此我认为JSON Path Extractor在我的情况下不起作用。效率是这里的加分项,但我会选择一些可行的方法。
我已经在BSF PostProcessor中尝试过此javascript:

var response = SampleResult.getResponseDataAsString();
var jsonOutput = JSON.parse(response);
jsonOutput.configState = "DELETED";
vars.put("json",jsonOutput);
Run Code Online (Sandbox Code Playgroud)

但是,调试采样器将响应显示为“对象”,仅此而已。有任何想法吗?谢谢。

Dmi*_*i T 5

我不认为您使用JSONRhino或Nashorn,这就是您的脚本失败的原因。我建议考虑切换到JSR223 PostProcessor并使用JSONBuilderJSONSlurper,例如:

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()) 
Run Code Online (Sandbox Code Playgroud)

请参见Beanshell,JSR223和Java JMeter脚本:您一直在等待的性能下降!要学习的文章

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