2016-04-22 8 views
1

Ich versuche zu korrelieren oder erstellen Sie eine "Check" in Gatling laden Werkzeug, aber nicht sicher, wie es geht. Ich habe das fortgeschrittene Tutorial-Dokument von der offiziellen Gatling-Webseite gelesen, konnte aber nicht viel über die Korrelation des dynamischen Wertes herausfinden.Korrelation der dynamischen Wert in Gatling

Unten finden Sie die peice von Code aus meinem Skript

.feed(feeder) 

    .exec(http("EnterDetails") 
     .post("/events/review.action") 
     .headers(headers_6) 
     .formParam("userInfo.spgEmail", "") 
     .formParam("userInfo.title", "") 
     .formParam("userInfo.firstName", "${FirstName}") 
     .formParam("userInfo.lastName", "${LastName}") 
     .formParam("userInfo.address1", "Open") 
     .formParam("userInfo.address2", "") 
     .formParam("userInfo.city", "${City}") 
     .formParam("userInfo.state", "NYY") 
     .formParam("userInfo.country", "US") 
     .formParam("userInfo.zipCode", "10016") 
     .formParam("userInfo.primaryNoInfo.optedIn", "false") 
     .formParam("userInfo.phoneTwoInfo.optedIn", "false") 
     .formParam("userInfo.phoneThreeInfo.optedIn", "false") 
     .formParam("userInfo.primaryNoInfo.validInd", "Y") 
     .formParam("userInfo.phoneTwoInfo.validInd", "") 
     .formParam("userInfo.phoneThreeInfo.validInd", "") 
     .formParam("userInfo.phoneUseType1", "0") 
     .formParam("userInfo.primaryNoInfo.phoneNumber", "9876543211") 
     .formParam("userInfo.primaryNoInfo.extension", "") 
     .formParam("userInfo.country1", "US%28%2B1%29") 
     .formParam("__checkbox_userInfo.primaryNoInfo.oneTimeOptInPresent", "true") 
     .formParam("userInfo.phoneUseType2", "-1") 
     .formParam("userInfo.phoneTwoInfo.phoneNumber", "") 
     .formParam("userInfo.phoneTwoInfo.extension", "") 
     .formParam("userInfo.country2", "US%28%2B1%29") 
     .formParam("__checkbox_userInfo.phoneTwoInfo.oneTimeOptInPresent", "true") 
     .formParam("userInfo.phoneUseType3", "-1") 
     .formParam("userInfo.phoneThreeInfo.phoneNumber", "") 
     .formParam("userInfo.phoneThreeInfo.extension", "") 
     .formParam("userInfo.country3", "US%28%2B1%29") 
     .formParam("__checkbox_userInfo.phoneThreeInfo.oneTimeOptInPresent", "true") 
     .formParam("userInfo.email", "") 
     .formParam("userInfo.retypeEmail", "") 
     .formParam("userInfo.nonCCPayment", "true") 
     .formParam("userInfo.SPGNumber", "") 
     .formParam("userInfo.arrivalCarrier", "") 
     .formParam("userInfo.transportationNumber", "") 
     .formParam("userInfo.transportationArrTime", "") 
     .formParam("userInfo.hotelArrivalTime", "") 
     .formParam("userInfo.hotelDepartureTime", "") 
     .formParam("userInfo.SRequest", "") 
     .formParam("userInfo.IAgree", "true") 
     .formParam("__checkbox_userInfo.IAgree", "true") 
     .formParam("method%3Aexecute", "Review+Your+Reservation+")) 
    .pause(2) 
    .exec(http("ReviewREservation") 
     .get(uri3 + "/s01000706679492?AQB=1&ndh=1&pf=1&t=21%2F3%2F2016%2012%3A45%3A54%204%200&D=D%3D&fid=31A8BC73D5B8ACEB-2B64CD0ACE185774&ce=UTF-8&pageName=Review%20Reservation&g=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Freview.action&r=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Fselectcreate%21execute.action%3FselRoom%3D1&cc=USD&ch=StarGroups&server=StarGroups&c2=SOCIAL&c3=1603295001&c4=271&c5=SI&c6=YES&c8=en&s=1600x838&c=24&j=1.6&v=N&k=Y&bw=1042&bh=733&AQE=1") 
     .headers(headers_3)) 
    .pause(7) 
    .exec(http("request_13") 
     .post("/events/confirm.action") 
     .headers(headers_6) 
     .formParam("method%3Aexecute", "Complete+Your+Reservation")) 
    .pause(4) 

    .exec(http("CompleteReservation") 
     .get(uri3 + "/s03623649917832?AQB=1&ndh=1&pf=1&t=21%2F3%2F2016%2012%3A46%3A5%204%200&D=D%3D&fid=31A8BC73D5B8ACEB-2B64CD0ACE185774&ce=UTF-8&pageName=Reservation%20Confirmation&g=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Fconfirm.action&r=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Freview.action&cc=CAD&purchaseID=20160421_734091125&ch=StarGroups&server=StarGroups&events=purchase&products=%3B271%3B1%3B100.00&c2=SOCIAL&c3=1603295001&c4=271&v4=20160421_734091125&c5=SI&c6=YES&c8=en&s=1600x838&c=24&j=1.6&v=N&k=Y&bw=1042&bh=733&AQE=1") 
     .headers(headers_3)) 

setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) 

in den obigen Code, den ich in

.exec (http ("CompleteReservation") eine dynamische Kauf ID haben, die erzeugt wird vom Server und muss korreliert werden.

Von der Gatling Dokumentation verstehe ich (korrigieren Sie mich, wenn ich falsch liege), dass wir den inspect Element Code benötigen, um den CSS Pfad zu erhalten ehe). Inspect Element

Bitte lassen Sie mich wissen, wie korrelieren wir. TIA.

+0

Alle Antworten bitte :( –

+0

Zuerst ist Ihr Link "Inspect Element" falsch. Als nächstes geben Sie bitte an, was es bedeutet "muss korreliert werden" .. meinst du, dass es aus der Antwort gelesen werden muss? So, wie die Antwort aussieht: Grundsätzlich geben Sie an, was Sie damit machen wollen – Teliatko

+0

OK, in einfachen Worten, wie korrelieren wir den dynamischen Wert in Gatling.Zum Beispiel: - In Load runner nehmen wir die LB und RB aus die Antwort und korrelieren sie aber in Gatling, wo sehen wir die Antwort und wie korrelieren wir den dynamischen Wert. –

Antwort

1

In Gatling müssen Sie Schecks verwenden, um einen Wert aus der Antwort zu extrahieren. Werfen Sie einen Blick in .

Sie können regex oder xpath verwenden, um den Wert im Tag zu extrahieren. Aber in Ihrem Fall würde ich empfehlen, einfach regex zu verwenden, da IMO in Ihrer Beispielantwort keine Tags oder IDs gibt, wo Sie einfach mit xpath haken können. Ich meine die Art, wie der Ausdruck xpath immer noch einfach und verständlich bleibt. Als nächstes wird der Wert in die Sitzung extrahiert und anschließend verwendet.

Es folgt das Beispielszenario Abfragepfad der URI von Antwort von example.com empfangen Extrahieren, die später in der Konsole gedruckt wird:

val scn = scenario("Checks") 
    .exec(
    http("root") 
    .get("/") 
    .check(
     // Extracting URI query path from response body via regexp and storing into session 
     regex("""www\.iana\.org/([a-z/]*)""").find.saveAs("queryPath") 
    ) 
) 
    // Printing the value from session 
    // Important thing to note is how you can access stored value from session 
    .exec { session => 
    println(" QUERY PATH --> " + session("queryPath").as[String]) 
    session 
    } 

In Ihrem Fall Ihre letzte Teil etwas könnte wie folgt aussehen:

.exec(http("CompleteReservation") 
    .get(uri3 + "/s03623649917832?AQB=1&ndh=1&pf=1&t=21%2F3%2F2016%2012%3A46%3A5%204%200&D=D%3D&fid=31A8BC73D5B8ACEB-2B64CD0ACE185774&ce=UTF-8&pageName=Reservation%20Confirmation&g=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Fconfirm.action&r=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Freview.action&cc=CAD&purchaseID=20160421_734091125&ch=StarGroups&server=StarGroups&events=purchase&products=%3B271%3B1%3B100.00&c2=SOCIAL&c3=1603295001&c4=271&v4=20160421_734091125&c5=SI&c6=YES&c8=en&s=1600x838&c=24&j=1.6&v=N&k=Y&bw=1042&bh=733&AQE=1") 
    .headers(headers_3)) 
    .check(
     regex("""Your confirmation number is (\d+)""") // Regular expression with group which represents confirmation number. 
     .find 
     .saveAs("confirmationNumber") // Now the extracted regexp group is stored in session under "confirmationNumber" as name. 
    ) 
    // Missing, check, transformation or use of value from session 

Ich weiß nicht, wie Sie den extrahierten Wert verwenden, daher fehlt es oben im Snippet. Aber ich hoffe, dass Sie bereits eine Idee haben, wie Sie mit Antworten umgehen und wie Sie die extrahierten Werte als nächstes verwenden können.

Ich hoffe, dass es hilft.