2016-05-03 7 views
0

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.

Antwort

0

httpRequest Signatur ist (method: String, url: Expression[String]), siehe documentation.

Es kann nicht ein Ausdruck, nur eine statische Zeichenfolge.