2017-01-19 3 views
1

У меня есть ответ JSON в SoapUI который выглядит следующим образом:Получить информацию в JSONPath SoapUI

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

Но я хочу использовать JsonPath, чтобы получить только часть этих данных, так что я мог бы что-то вроде этого:

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

Есть ли способ применить выражение JsonPath для получения этой информации?

+0

Вы хотите сказать, что получить некоторые данные из первого шага и установить его на следующий запрос? – Rao

+0

Да, я получил ответ и для следующего запроса мне нужны только эти два параметра. – juperi

+0

Был ли это весь ответ? просто его часть? – Rao

ответ

0

Для первого шага запроса, добавьте Script Assertion и используйте ниже сценарий. Сценарий извлекает значения nom и prenom и устанавливает их в пользовательских свойствах уровня тестового случая с указанными именами свойств. С Script Assertion можно избежать дополнительного этапа тестирования Groovy Script.

Затем на следующем этапе тестирования используйте расширение свойства, чтобы эти значения автоматически заменились фактическими значениями на soapui.

Script Assertion:

//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) 

Изменение второго шага содержание запроса, как показано ниже с расширением собственности

{ 
    "nom" : "${#TestCase#NOM}", 
    "prenom" : "${#TestCase#PRENOM}" 
} 
+0

Спасибо, это очень помогло мне! Мне просто пришлось изменить часть «log.info», она работала для меня без «{}" – juperi

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); 
Смежные вопросы