在JSONPath SoapUI中检索信息

时间:2017-01-19 11:31:09

标签: arrays json soapui jsonpath

我在SoapUI中有一个JSON响应,如下所示:

{
  "civilite" : "1" ,
  "nom" : "Fitz",
  "prenom" : "Quinn",
  "dateN" : "07/10/1953"
}

但我想使用JsonPath只检索这部分数据,所以我可以这样:

{
  "nom" : "Fitz",
  "prenom" : "Quinn"
}

有没有办法应用JsonPath表达式来检索此信息?

2 个答案:

答案 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并使用以下脚本。该脚本提取nomprenom值,并在具有给定属性名称的测试用例级别自定义属性中设置它们。使用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}"
}