2017-02-15 3 views
1

В моем пользовательском интерфейсе SOAP у меня есть два шага: шаг строчного скрипта и шаг запроса на отдых для метода POST crud.Как добавить дополнительные данные в запрос json

В строчном сценарии я создаю случайное свойство тестового случая с именем «взрослые». Это значение является случайным значением между 2-5.

testRunner.testCase.setPropertyValue('adults', String.valueOf((int)Math.random()*5)+2); 

Ниже мой запрос остальные для POST:

{ 
    "xxx": "xxx", 
    "ratePlanCode": "xxx" 
    "roomOccupancies": [ 
    { 
     "passengersInformation": [ 
     { 
      "firstName": "Test", 
      "lastName": "Tester", 
      "isLeadPassenger": true, 
      "age": 30 
     }, 
     ] 
    } 
    ], 
    "xxx": "xxx" 
} 

Сейчас этот запрос фиксируется на 1 взрослого пассажира, но проблема в том, что если у меня есть несколько пассажиров, я на самом деле нужно несколько пассажиров под "passengersInformation". Так что практически для каждого дополнительных взрослого мне нужно добавить:

{ 
     "firstName": "Test", 
     "lastName": "Tester", 
     "isLeadPassenger": false, 
     "age": 30 
    }, 

Так что я имею в виде это за имя пассажира, как мы не имеет прав одинаковых имена, мы просто добавить номер в конец первого и Фамилия. Остальные два поля мы можем сохранить.

Итак, мой вопрос заключается в том, как добавить дополнительные данные о пассажирах в запрос, исходя из количества взрослых, случайно выбранных из строкового сценария?

Спасибо,

ответ

1

Вот один способ тиражирования пассажира: Обратите внимание, я должен был исправить пару запятых (дополнительный и отсутствующий) в строке JSON.

import groovy.json.* 
def jsonData = '''{ 
    "hotelArrivalDate": "2017-06-01T18:15:00", 
    "ratePlanCode": "xxx=", 
    "roomOccupancies": [ 
    { 
     "passengersInformation": [ 
     { 
      "firstName": "Test", 
      "lastName": "Tester", 
      "isLeadPassenger": true, 
      "age": 30 
     } 
     ] 
    } 
    ], 
    "holidaysBookingReference": "TestRef" 
}''' 
def n=1 
def data = (new JsonSlurper()).parseText(jsonData) 
def newPerson = data.roomOccupancies[0]. 
        passengersInformation[0]. 
        collectEntries {k,v -> 
         ['firstName','lastName'].contains(k) ? [k,v+n] : [k,v] 
        } 
data.roomOccupancies[0].passengersInformation << newPerson 
jsonData = (new JsonBuilder(data)).toPrettyString() 

результат

{ 
    "hotelArrivalDate": "2017-06-01T18:15:00", 
    "ratePlanCode": "xxx=", 
    "roomOccupancies": [ 
     { 
      "passengersInformation": [ 
       { 
        "firstName": "Test", 
        "lastName": "Tester", 
        "isLeadPassenger": true, 
        "age": 30 
       }, 
       { 
        "firstName": "Test1", 
        "lastName": "Tester1", 
        "isLeadPassenger": true, 
        "age": 30 
       } 
      ] 
     } 
    ], 
    "holidaysBookingReference": "TestRef" 
} 
Смежные вопросы