Frage

Wie kann ich in den Benutzerparametern von JMeter einen variablen Kleinbuchstaben erstellen?

Linke Spalte

my_lowercase_variable

Rechte Spalte

${__BeanShell('${my_variable}'.toLowerCase())}  //fails

oder

${__javaScript('${my_variable}'.toLowerCase())}  //fails

So dass ${my_lowercase_variable} ist Kleinbuchstaben von ${my_variable}. Versucht mit Zitat und ohne und zu entkommen und so. Kein Glück. Alle Tricks oder Tipps sind willkommen.

War es hilfreich?

Lösung

Notiz an mich selbst.

Es stellt sich eher als zwei Liner im Beanshell -Sampler als als __BeANShell -Befehl heraus. Nicht genau in den Beispielen leider.

Ich habe den BeanShell -Sampler unter der Thread -Gruppe hinzugefügt und dann eine Variable gemacht. Es waren keine Parameter im Formular erforderlich, nur das folgende zwei Liner -Skript. Solange ich die Variable nicht ändere, kann ich die Daten in eine andere Variable kopieren, diese stattdessen ändern und dann einen Wert darauf geben, wo immer erforderlich ist.

Definieren Sie zunächst eine Variable in einigen Benutzerparametern oder dergleichen, dh:

Name: my_initial_reference 
Value: ITS IN CAPS

Fügen Sie einen Bean -Sampler unter die Liste der Benutzereinstellungen oder Definition hinzu (gerade als nächstes ist es kein untergeordneter Prozess)

Einstellen:

String blah = "${my_initial_reference}"; // 
vars.put("blah", blah.toLowerCase());  //${blah} = "its in caps" now available

Jetzt kann ich mit Namen/Wertpaaren $ {bla} als Wert für den Prozessnamen zuordnen.

Beachten Sie, dass die Debug -Antwort immer noch den Anfangswert in CAPS zeigt, aber Sie werden auch BLAH = in Caps sehen, was ich verwenden wollte.

Andere Tipps

Hmmmm, Ihr Bohnen -Shell -Code hat bei mir nicht funktioniert. Der Bohnenschalen -Sampler kehrte zurück:

Response code: 500
Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval  Sourced file: inline evaluation of: ``String blah = AAP;  vars.put("blah", blah.toLowerCase());  //${blah} now availab . . . '' : Typed variable declaration : Void initializer

Ich habe zwei Doppelzitate hinzugefügt, um es zu lösen:

String blah = "${my_initial_reference}";
vars.put("blah", blah.toLowerCase());  //${blah} now available

Kann einfach eine Funktion hinzufügen

${__lowercase(${VAL},VALUE)}
${__uppercase(${VAL},VALUE)}

HINWEIS: VAL kann korreliert oder paramiteriziert werden (er val = bis unter oder val = bis obere). Wir können diese Funktion in BeanShell (Pre-Processor/Post-Processor/Sampler) verwenden. JMeter -Version mit (2.6).

Kann es verwenden, wo immer wir im Skript als $ {value} wollen.

${__javaScript('${foobar}'.toLowerCase())} tut Arbeit. Wenn der Ausgang ist ${foobar} Anstatt von desired value, Dies bedeutet, dass die Variable nicht deklariert wurde

Beachten Sie, dass Variablen nur definiert sind nach Die Komponente "Benutzerdefinierte Variable" war analysiert. Variablen können nicht in einer einzelnen "benutzerdefinierten Variablen" -Komponente z. B. wiederverwendet werden:

enter image description here

Die zweite Zeile in diesem Bild kann sich nicht auf die Variable beziehen my_variable in der ersten Reihe. Um sich auf die erste Variable beziehen zu können, zwei "Benutzerdefinierte Variable" -Komponenten sind erforderlich. Die erste Variable befindet sich in der ersten Komponente und die zweite Variable im zweiten, z. B.:

enter image description here

Damit, ${my_lower_case_variable} wird erfolgreich in konvertiert in some value.


${__BeanShell("${my_variable}".toLowerCase())} funktioniert auch. (Beachten Sie diese Bohnenschale erfordert Anführungszeichen. Der Code in Ihrer Frage verwendet einzelne Zitate.)

Ein anderer Weg ist zu verwenden vars.get:

  • ${__javaScript(vars.get('my_variable').toLowerCase())}

  • ${__BeanShell(vars.get("my_variable").toLowerCase())}

Die Funktionen Beanshell und JavaScript in dieser Verwendung schließen fehl, da sie die Pakete, die Sie benötigen, nicht importieren, um sie zu verwenden .toLowerCase.

Wenn Sie wirklich eine Funktion verwenden müssen, um den Fall zu konvertieren (und dann in erster Linie als Kleinbuchstaben deklarieren), müssen Sie möglicherweise ein volles Beanshell-Postprozessor-Skript schreiben, um die erforderlichen Pakete zu importieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top