Wie kann ich in JMeter und BeanShell einen variablen Kleinbuchstaben erstellen?
-
15-10-2019 - |
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.
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:
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.:
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.