我在SoapUI中有一个JSON响应,如下所示:
{ "civilite" : "1" , "nom" : "Fitz", "prenom" : "Quinn", "dateN" : "07/10/1953" }
但我想使用JsonPath只检索这部分数据,所以我可以这样:
{ "nom" : "Fitz", "prenom" : "Quinn" }
有没有办法应用JsonPath表达式来检索此信息?
答案 0 :(得分:0)
试试这个
input = {
"civilite" : "1" ,
"nom" : "Fitz",
"prenom" : "Quinn",
"dateN" : "07/10/1953"
}
output ={};
input.reduce(function (result, currentObject) {
output = {
nom: currentObject.nom,
prenom: currentObject.prenom
};
return output;
}, output);
答案 1 :(得分:0)
对于第一个请求步骤,添加Script Assertion
并使用以下脚本。该脚本提取nom
和prenom
值,并在具有给定属性名称的测试用例级别自定义属性中设置它们。使用Script Assertion
,可以避免额外的Groovy Script
测试步骤。
然后在下一个测试步骤中,使用属性扩展,以便这些值将由soapui自动替换为实际值。
脚本断言:
//Check if the response is non empty or null
assert context.response
//Parse Json
def parsedJson = new groovy.json.JsonSlurper().parseText(context.response)
log.info "Nom: ${parsedJson.nom}"
log.info "Prenom: ${parsedJson.prenom}"
//assert if nom and prenom are not empty
assert parsedJson.nom, "nom is null or empty in the response"
assert parsedJson.prenom, "prenom is null or empty in the response"
//Set the retrieved values at test case level properties NOM, PRENOM
context.testCase.setPropertyValue('NOM', parsedJson.nom as String)
context.testCase.setPropertyValue('PRENOM', parsedJson.prenom as String)
使用 Property Expansion
更改第二步请求内容,如下所示{
"nom" : "${#TestCase#NOM}",
"prenom" : "${#TestCase#PRENOM}"
}