2013-04-02 4 views
12

Ich versuche ein Jmeter-Skript zu generieren, wo ein eindeutiger Ordner jedes Mal erstellt wird, wenn das Skript ausgeführt wird - eine Variable wie Ordnername + Zeitstempel hinzufügen sollte genug, um Einzigartigkeit zu garantieren. Allerdings löst jmeter die Variable nicht auf ihren Wert auf - obwohl dies der Fall ist, wenn die Variable aus einer CSV-Datei ausgelesen wird (was nicht geeignet ist).Variablen in httprequest post body

Grundsätzlich bin ich der Bearbeitung der PostBody in der HTTP-Anforderung wie folgt:

{ "alf_destination": "Arbeitsbereich: // SpacesStore/90368635-78a1-4dc5-be9e-33458f09c3f6",“ prop_cm_name ":" Test Folder - $ {variable}“, "prop_cm_title": "Test Folder", "prop_cm_description": "Test Folder"}

wo variable im Grunde ist jede Variable ich so versucht haben, weit (wie eine zufällige Zeichenfolge, Zeitstempel usw.)

Kann jemand vorschlagen, wie man die Variable löst?

Antwort

4

Ich tat dies durch Verweisen auf eine Variable in der HTTP-Anfrage post body - ${formvalues} - erstellt mit einem Beanshell Preprocessor, der an die HTTP-Anfrage Sampler angehängt wird.
Beanshell Inhalt:

double random = Math.random();  
String formvalues ="{\"alf_destination\":\"workspace://SpacesStore/90368635-78a1-4dc5-be9e-33458f09c3f6\",\"prop_cm_name\":\"Test Folder - ${uname}_" + random + "\",\"prop_cm_title\":\"Test Folder\",\"prop_cm_description\":\"Test Folder\"}";   
vars.put("formvalues",formvalues); 

So entsteht ein Ordner mit dem Benutzernamen (${uname}, aus der csv genommen) sowie eine Zufallszahl - es ist roh, da es nach wie vor potentiell Fälle geben könnte, wo das Skript einen Ordner zu erstellen versucht, mit der gleiche Name wie ein bestehender, aber es wird für meinen Fall funktionieren.

9

Mit JMeter 2.9, die folgenden Werke:

In HTTP-Request-Sampler, Tab "Post Body" fügen Sie Ihre JSON-Daten zum Beispiel und umfassen die Variablen in ihm:

{"uuid":"${new-uuid}"} 

new-uuid ist ein Benutzer definierte Variable. Dies wird (von Ansicht Ergebnisse Baum, Tab "Request"/"Raw") senden:

POST data: 
{"uuid":"a1b2c3d4e5f6"} 
+0

dies war für mich mit JMeter 2.11. – seixasfelipe

19

können Sie jmeter verwenden (seit 2.9-Version) Uuid Funktion ->http://jmeter.apache.org/usermanual/functions.html#__UUID

${__UUID} 

und

1) Wenn Sie nur einen Wert für den gesamten Test wünschen, fügen Sie ein "User Defined Variables" Konfigurationselement zu Ihrem Test hinzu. Dies wird ausgewertet, wenn Sie das Testskript das erste Mal laden.

2) Wenn Sie möchten, für jede Thread-Ausführung die Wertänderung haben, aber das gleiche bei jeder Thread-Instanz bleiben: unter Ihrem Thema Gruppe, fügen Sie einen ‚Pre-Prozessoren -> Benutzerparameter‘ auf Ihren Thread Gruppe - und fügen Sie die Variable dort hinzu.

Auch, wenn Sie den Wert wollen jedes Mal ändern, der Faden über beginnt (jeweils ‚Iteration‘ des Skripts in der Thread-Gruppe), können Sie überprüfen Sie das „Update einmal pro Iteration“ -Box auf dem Anwenderparameter - und es wird einen neuen Wert jedes Mal erhalten, wenn es den Thread über den Anfang des Testskripts (innerhalb dieser Threadgruppe) startet.

http://mail-archives.apache.org/mod_mbox/jmeter-user/201208.mbox/%[email protected]%3E

+0

In jmeter 2.11 hat dies über jede beliebige Variable in einem HTTP-Json-POST-Body funktioniert – airboss

+0

Es funktionierte in Jmeter 2.13, in Anfrage Körper durch Setzen von $ {__ UUID} – mecek