2016-10-20 3 views
0

Ich möchte 2 Arten von Parametern zu einer Post-Anfrage hinzufügen.Jmeter: Zufallszahl mit Bohnenschale

von einem HTTP-Anfrage extrahieren I 2 Liste von Variablen:

Order_id = input type="hidden" name="(drag.+?)" value="(\d+?)" 

Weight_id = class="draggableviews-weight form-select" id=".+?" name="(drag.+?)" 

In der Post-Anforderung, die ich diese Variablen alle müssen umbuchen folgt. Ich benutze dafür einen BeanShell PreProcessor. Die erste Liste ist kein Problem, da diese den gleichen Wert erhält. Die zweite Liste sollte einen neuen zufälligen Wert zwischen -50 und 50 erhalten. Ich möchte auch einen anderen zufälligen Wert für jede Iteration.

Wie soll ich das tun?

image1 image2 image3

Wenn ich Zufall Variabele Config Element verwenden bekomme ich die gleichen Zufall int für jeden variabele. Ich möchte eine andere für jede Iteration.

enter image description here

Antwort

0

Um mehrere Werte aus einzelnen Regular Expression Extractor abrufen, die wir verwenden Vorlagen wie folgt:

enter image description here

dann beziehen sich Gruppen wie folgt: enter image description here

Im Bild, Sie können sehen, dass link ist Reference Name und es gibt nur Übereinstimmung mit dem regulären e gefunden Ausdruck.

number of matches is : link_matchNr 
first group value : link_1_g1 
second group value : link_1_g2 

Hinweis: Der reguläre Ausdruck Ich habe versucht, auf google.com ist, können Sie auch die gleiche simulieren wie folgt: enter image description here

  1. Verwenden Random function wie folgt:

    Wert2 = $ {__Random (-50,50)};

    log.info ("valuee2" + value2);

    1. Verwendung Random Variable: enter image description here Dann Output Variable in Beanshell Preprocessor beziehen, wie folgt:

    Wert2 = vars.get ("randomInt");

+0

Versucht dies, aber hat nicht funktioniert. – DDHOOGE

+0

Was ist der Fehler? Hast du den Wert von value2 überprüft? benutze log.info ("values2" + value2); in Beanshell Preprocessor und ausführen. Überprüfen Sie den Wert in den Protokollen –

+0

2016/10/28 08:48:59 ERROR - jmeter.config.RandomVariableConfig: Maximum() muss> Minimum1) sein 2016/10/21 08:49:01 ERROR - jmeter.util.BeanShellInterpreter : Fehler beim Aufrufen der bsh-Methode: eval \t In Datei: Inline-Auswertung von: '' int count = Integer.parseInt (vars.get ("Order_id_matchNr")); . . . '' "" In Zeile 16, Spalte 9 gefunden. – DDHOOGE

2

Ich würde empfehlen, über Parameters oder args Kürzeln oder entsprechende Code- mit ThreadLocalRandom.nextInt() Verfahren wie

sampler.addArgument(name2, String.valueOf(java.util.concurrent.ThreadLocalRandom.current().nextInt(-50, 51))); 

Sie Inline nicht JMeter Functions in Skripts Beanshell, entweder geben sie über „Parameter“ auf und beziehen verwenden Substitutionen.

Weitere Informationen zu Beanshell-Skripts in JMeter-Tests finden Sie in der Dokumentation How to Use BeanShell: JMeter's Favorite Built-in Component.

+0

Thx! Habe es funktioniert! – DDHOOGE

+0

Danke @Dmitri T. Ich habe eine Frage: Was soll 'java.util.concurrent.ThreadLocalRandom.current(). NextInt()' oder die interne JMeter-Funktion '__Random()' bevorzugt werden? Gibt es Regeln/Best Practice, wann welche verwenden? –

+1

Verwenden Sie die internen JMeter-Funktionen, wenn möglich, wenn Sie Skripte verwenden, übergeben Sie sie über die Registerkarte "Parameter". Es ist auch in Ordnung, 'ThreadLocalRandom' zu verwenden, stellen Sie jedoch sicher, dass Sie [JSR223 Elements] (http://jmeter.apache.org/usermanual/best-practices.html#jsr223) und Groovy-Sprache verwenden. Siehe [Groovy Is the New Black] (https://www.blazemeter.com/blog/groovy-new-black) für Details. –