Prima di tutto si desidera generare il numero casuale ogni volta, quindi OrderRef
deve essere un metodo, come:
def orderRef() = Random.nextInt(Integer.MAX_VALUE)
commento a margine: dalla Scala convenzione: nome camelCase,(), mentre genera nuovi valori , senza ;
alla fine.
Per utilizzare il metodo preparato non è possibile utilizzare la stringa Gatling EL. La sintassi è molto limitata e fondamentalmente le ricerche "${OrderRef}"
per la variabile con nome OrderRef
in Gatling Session.
modo corretto è quello di utilizzare la funzione Espressione come:
.exec(
http("OrderCreation")
.post("/abc/orders")
.body(StringBody(session => s"""{ "orderReference": "${orderRef()}" }""")).asJSON
)
Qui si sta creando funzione anonima prendere Gatling Session
e tornando String
come corpo. La stringa viene composta tramite il meccanismo di interpolazione della stringa standard e utilizza prima la funzione preparata orderRef()
.
Naturalmente è possibile omettere Scala di interpolazione di stringhe come: stile
.body(StringBody(session => "{ \"orderReference\": " + orderRef() +" }")).asJSON
che non è molto preferito quando si utilizza Scala.
Vedere ulteriori dettagli nella documentazione di Gatling su Request Body e leggere ulteriori informazioni su Galting EL syntax.
Un modo alternativo è quello di definire un alimentatore:
// Define an infinite feeder which calculates random numbers
val orderRefs = Iterator.continually(
// Random number will be accessible in session under variable "OrderRef"
Map("OrderRef" -> Random.nextInt(Integer.MAX_VALUE))
)
val scn = scenario("RandomJsonBody")
.feed(orderRefs) // attaching feeder to session
.exec(
http("OrderCreation")
.post("/abc/orders")
// Accessing variable "OrderRef" from session
.body(StringBody("""{ "orderReference": "${OrderRef}" }""")).asJSON
)
Qui la situazione è diversa, in primo luogo definiamo l'alimentatore, poi collegarlo alla sessione e quindi utilizzare il suo valore nella richiesta corpo attraverso Gatling EL stringa. Funziona mentre il valore del feeder viene prelevato dall'alimentatore da Gatling prima di un allegato alla sessione per ogni utente virtuale. Vedi di più sugli alimentatori here.
Raccomandazione: se lo scenario è semplice, iniziare con la prima soluzione. Se ci vuole un pensiero più complesso sui feeder.
Divertiti
Grazie mille ...Mi hai risparmiato un sacco di tempo :) –
Prego :) – Teliatko
Il primo modo "corretto" di farlo non ha funzionato per me. Il modo alternativo funzionava. Grazie. –