webentwicklung-frage-antwort-db.com.de

Verwenden Sie den Anforderungswert aus der Werteliste in JMeter

Ich bin mir sicher, dass ich das schon in der Vergangenheit gemacht habe, aber irgendwie kann ich nicht herausfinden, wie ;-) Also, hier ist mein Problem:

Ich versuche, einen JUnit-Testplan zu erstellen, in dem eine HTTP-Anforderung bei jeder Iteration durch Ändern eines bestimmten Parameters geändert wird. So möchte ich zum Beispiel in fünf Iterationen, dass die folgenden HTTP-Anfragen gestellt werden:

http://localhost:8080/test/foo.html?id=1
http://localhost:8080/test/foo.html?id=2
http://localhost:8080/test/foo.html?id=3
http://localhost:8080/test/foo.html?id=4
...

Ich möchte die Bezeichnerwerte global für den Testplan konfigurieren und sie im HTTP-Anforderungs-Sampler wie folgt verwenden:

Path: /test/foo.html?id=${categoryId}

Die Frage jetzt: Wie konfiguriere ich die Bezeichnerwerte global (ich möchte nicht StringFromFile verwenden) und wie verweise ich sie im Sampler?

15
perdian

Es gibt verschiedene Möglichkeiten, dies zu tun.

Wenn Sie eine Reihe von Werten haben, können Sie:

  • Probieren Sie den Pre-Prozessor "User Parameters" aus und erstellen Sie einen Eintrag für jeden User/Loop
  • Verwenden Sie ein Beanshell-Skript, um das Array zu erstellen, wählen Sie eines nach dem Zufallsprinzip aus und füllen Sie Ihre Variable

Sie verweisen genau so, wie Sie es angegeben haben: ${varName}

16
BlackGaff

Bezüglich der Implementierung von ${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}.

Angenommen, Sie können Ihr Szenario einfach implementieren, indem Sie z. BeanShell SamplerBeanShell PostProcessor mit ein bisschen Code.

Z.B.:

  • Stellen Sie Ihre Quellvariable ein (z. B. Benutzerdefinierte Variablen ):

     Name Wert 
     Kategorien 3,2,54,42,37 
    

    (d. h. Komma als Trennzeichen verwenden, keine Leerzeichen vor und nach dem Komma).

  • Verwenden Sie add BeanShell Sampler/PostProcessor mit dem folgenden Code:

     Java.util.Random importieren; 
     
     String [] categories = (vars.get ("categories")). split (","); 
     
     int idx = new Random (). nextInt (categories.length); 
     String category = (categories [idx]); 
     
     vars.put (" categoryId ", category); 
    
  • Lesen Sie im Skript den Wert der zufällig ausgewählten Formularliste als ${categoryId} nach.
17

Um einen zufälligen Variablenwert aus einer Liste zu erhalten, deklarieren Sie zuerst die Liste oder die verfügbaren Werte mit einem Präfix und einem inkrementellen Index als Benutzervariablen:

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England

Dann können Sie einen zufälligen Wert aus der Liste erhalten, die das Präfix mit einem zufälligen Index in dem Intervall verkettet:

${__V(country_${__Random(1,6,)})}  --> "Spain", "France", "Portugal", etc...

Schauen Sie sich diese Antwort an, um eine vollständige Erklärung zu erhalten.

7
AlexGuti

Die einfachste Lösung ohne Variablen kann mit vars.getIteration() durchgeführt werden:

/test/foo.html?id=${__groovy(vars.getIteration())}
0
user7294900