Soapui操纵json的反应

时间:2016-01-06 20:46:14

标签: json soapui

我正在使用SoapUI来测试宁静的Web服务。 我有一个测试步骤,它返回一个json响应,如..

{
  "createdUser": "CRINFO",
  "createdDate": 1254413167000,
  "updatedUser": "62041",
  "updatedDate": 1452105085000,
  "sourceSystem": "CIS",
  "versionNumber": 47,
  "crimeNo": "000037P/09",
  "furtherInvestigation": false

}

我希望在下一个测试步骤请求的主体中使用此响应,但我想首先操作一些属性。 例如将FurtherInvestigation属性设置为TRUE。

{
      "createdUser": "CRINFO",
      "createdDate": 1254413167000,
      "updatedUser": "62041",
      "updatedDate": 1452105085000,
      "sourceSystem": "CIS",
      "versionNumber": 47,
      "crimeNo": "000037P/09",
      "furtherInvestigation": true
}

我创建了一个属性转移步骤,并设法将整个响应转移到请求正文中的下一个测试步骤,但无法弄清楚如何更改属性。
在物业转移步骤中,我有以下选择.. 来源:previousTestStep属性:响应路径语言:JsonPath 目标:NextTestStep属性:请求路径语言:JsonPath

这是最好的方法吗?我已经研究过这个问题并发现了可能做我想做的groovy脚本,但认为必须有一个更简单的方法。 非常感谢您的任何帮助..

2 个答案:

答案 0 :(得分:1)

您只需按照以下步骤即可实现此目的。

1)为源测试步骤添加脚本断言

2)在脚本断言中添加以下行

def response = messageExchange.responseContent
response = response.replace("'furtherInvestigation': false","'furtherInvestigation': true")
messageExchange.modelItem.testStep.testCase.setPropertyValue("jsonResponse",response)

3)对于目标测试步骤,请为请求正文而不是实际请求正文保留$ {#TestCase#jsonResponse}

答案 1 :(得分:1)

如果您喜欢在Groovy中使用,可以使用以下步骤

  1. 使用console.log(moment())解析Json
  2. 操纵Json
  3. 3.再次建立Json

    JsonSlurper
    1. 将上述json设置为您的请求

        def builder = new JsonBuilder(your_changed_json)
        def json = builder.toPrettyString()
        json = groovy.json.StringEscapeUtils.unescapeJava(json)