Ich möchte ein Gatling-Szenario aus einer Sammlung von strukturierten Daten (StructuredDataCollection) erstellen.Gatling httpRequest mit dynamischer Methode aus der Sammlung
Mein Problem ist, dass ich nicht in der "Methode" (wie in HTTP-Methode) von einem Element aus der Sammlung in den http-Aufruf des eigentlichen Tests übergeben kann.
Hier ist ein Code-Snippet.
def testScenario(duration: Int) = scenario("SO").during(duration) {
exec {
session => {
val test = StructuredDataCollection.next()
val title = test.title
val method = test.method // Not being used, because it does not work like that :(
val endpoint = test.endpoint
val requiredParameters = test.requiredParameters
val code = test.code
session
.set("title", title)
.set("methodFUG", method).set("endpoint", endpoint)
.set("requiredParameters", requiredParameters)
.set("code", code)
}
}
.exec(
http("${title}")
.httpRequest("get", "${endpoint}") // TODO: method can't be passed in as an expression.
.queryParamMap("${requiredParameters}")
.check(status.is("${code}"))
)
}
Wie Sie sehen können, hat mich hart codiert „get“, aber das werde ich brauchen, um mit dem tatsächlichen Wert von der Methode Eigenschaft aus dem aktuellen ausgewählten Elemente aus der Sammlung ersetzt werden.
Leider ist Gatlings DSL nicht an allen Stellen verfügbar, an denen Sie es erwarten würden, und es liest das nur als Zeichenfolge. „$ {MethodFUG}“ und nicht der Wert aus dem Sammelelement
Es dauerte einige Zeit, um zu realisieren, dass http("${title}").httpRequest("${methodFUG}", "${endpoint}")
tatsächlich einen HTTP-Aufruf mit der ungültigen Methode machen, die „GET“ sein könnte, „POST“ , "PUT", "DELETE" und so weiter.