JMeter修改要在PUT中使用的GET响应

时间:2016-09-13 15:08:40

标签: jmeter

我有两个请求,第一个是GET,第二个是PUT。我应该从GET请求接收响应数据,稍微修改一下并发送PUT请求。到目前为止,我设法做了所有事情,除了修改响应数据。

对于GET请求,我使用正则表达式提取器作为预处理器: parsing get

目前我发送PUT请求而不修改数据: sending put

JSON结构:

{
  "property1" : 1,
  "property2" : "2",
  "innerPropery" : {
    "innerProperty1" : "value1",
    "innerProperty2" : "value2",
    "innerProperty3" : "value3"
  }
}

我应该更改innerProperty2。

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以在没有正则表达式提取器临时步骤的情况下执行此操作。

  1. JSR223 PostProcessor添加为getForm请求的子项
  2. 在"语言"中选择groovy;下拉
  3. 将以下代码放入"脚本"面积:

    import groovy.json.JsonBuilder
    import groovy.json.JsonSlurper
    
    def response = prev.getResponseDataAsString()
    def json = new JsonSlurper().parseText(response)
    
    def builder = new JsonBuilder(json)
    builder.content.property2 = '2.1'
    
    vars.put("response", builder.toPrettyString())
    
  4. saveForm请求中使用${response}作为请求正文
  5. 参考文献:

答案 1 :(得分:0)

我已经设法通过BeanShell PostProcessor完成了这项工作。首先,我添加了一个新的BeanShell PostProcessor:在getFrom上单击右键,添加 - >后处理器 - > BeanShell PostProcessor。之后,我打开了重新使用的BeanSChell,并在Script字段中编写了以下代码:

responseString = vars.get("response");
log.info("Received response: " + responseString);
responseString = responseString.replace("\"prop1\" : \"value2\"", "\"prop1\" : \"value2.1\"");
log.info("Response to send: " + responseString);
vars.put("modifiedResponse", responseString);

在参数字段中,我写道:

response

最后,我改变了PUT请求身体

${response}

${modifiedResponse}