我正在使用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脚本,但认为必须有一个更简单的方法。 非常感谢您的任何帮助..
答案 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中使用,可以使用以下步骤
console.log(moment())
解析Json 3.再次建立Json
JsonSlurper
将上述json设置为您的请求
def builder = new JsonBuilder(your_changed_json)
def json = builder.toPrettyString()
json = groovy.json.StringEscapeUtils.unescapeJava(json)