2017-02-15 7 views
1

In meiner SOAP-UI habe ich zwei Schritte, einen groovigen Scriptschritt und einen Ruheanforderungsschritt für eine POST-Crud-Methode.So fügen Sie zusätzliche Daten in einer JSON-Anfrage hinzu

Im groovigen Skript erstelle ich eine zufällige Testfalleigenschaft namens "Erwachsene". Dieser Wert ist ein zufälliger Wert zwischen 2 und 5.

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

Unten ist mein Ruheanforderung für die POST:

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

Jetzt wird diese Anforderung für 1 Erwachsenen Passagier festgelegt, aber das Problem ist, dass, wenn ich mehrere Passagiere haben, muss ich tatsächlich mehrere Passagiere unter "Passagierinformationen". So praktisch für jeden weiteren Erwachsenen Ich muss hinzufügen:

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

Also, was ich denke ist für den Namen des Passagiers, da wir nicht doppelte Namen erlaubt sind, wir nur eine Zahl am Ende des ersten hinzufügen und Familienname, Nachname. Die anderen zwei Felder können wir gleich behalten.

Also meine Frage ist, wie fügen wir zusätzliche Passagierdetails innerhalb der Anfrage basierend auf der Anzahl der Erwachsenen zufällig aus dem groovigen Skript ausgewählt?

Danke,

Antwort

1

Hier ist ein Weg, um den Passagier zu replizieren: Hinweis I in dem JSON-String ein paar Kommas (extra und fehlt) zu beheben hatte.

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

Ergebnis

{ 
    "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" 
} 
Verwandte Themen