20. Funktionen und Variablen ¶
JMeter-Funktionen sind spezielle Werte, die Felder eines beliebigen Samplers oder eines anderen Elements in einer Teststruktur füllen können. Ein Funktionsaufruf sieht so aus:
${__Funktionsname(var1,var2,var3)}
Wobei „__functionName“ mit dem Namen einer Funktion übereinstimmt.
Klammern umgeben die an die Funktion gesendeten Parameter, zum Beispiel ${__time(YMD)}
Die tatsächlichen Parameter variieren von Funktion zu Funktion. Funktionen, die keine Parameter benötigen, können die Klammern weglassen, zum Beispiel ${__threadNum} .
Wenn ein Funktionsparameter ein Komma enthält, stellen Sie sicher, dass Sie dies mit " \ " maskieren, da JMeter es andernfalls als Parametertrennzeichen behandelt. Zum Beispiel:
${__time(EEE\, d MMM jjjj)}Wenn das Komma nicht maskiert wird – z. B. ${__javaScript(Math.max(2,5))} – erhalten Sie eine Fehlermeldung wie die folgende:
FEHLER - jmeter.functions.JavaScript: Fehler bei der Verarbeitung von Javascript: [Math.max(2) org.mozilla.javascript.EvaluatorException: missing ) nach Argumentliste (<cmd>#1)Dies liegt daran, dass die Zeichenfolge " Math.max(2,5) " als zwei Parameter für die __javascript-Funktion behandelt wird:
Math.max(2 und 5)
Andere Fehlermeldungen sind möglich.
Variablen werden wie folgt referenziert:
${VARIABLE}
Wenn auf eine nicht definierte Funktion oder Variable verwiesen wird, meldet/protokolliert JMeter keinen Fehler – die Referenz wird unverändert zurückgegeben. Wenn beispielsweise UNDEF nicht als Variable definiert ist, dann ist der Wert von $ {UNDEF} ${UNDEF} . Bei Variablen, Funktionen (und Eigenschaften) wird die Groß- und Kleinschreibung beachtet. JMeter entfernt vor der Verwendung Leerzeichen aus Variablennamen, sodass beispielsweise ${__Random(1,63, LOTTERY )} die Variable ' LOTTERY ' anstelle von ' LOTTERY ' verwendet.
Verwenden Sie alternativ einfach / anstelle des Pfadtrennzeichens – z . B. C:/test/${test} – Windows-JVMs konvertieren die Trennzeichen nach Bedarf.
Liste der Funktionen, lose in Typen gruppiert.
Art der Funktion | Name | Kommentar | Seit |
---|---|---|---|
Information | threadNum | Threadnummer bekommen | 1.X |
Information | threadGruppenname | Thread-Gruppennamen erhalten | 4.1 |
Information | SamplerName | Holen Sie sich den Sampler-Namen (Label) | 2.5 |
Information | Maschinen-IP | Rufen Sie die IP-Adresse des lokalen Computers ab | 2.6 |
Information | Maschinenname | Holen Sie sich den Namen des lokalen Computers | 1.X |
Information | Zeit | Aktuelle Zeit in verschiedenen Formaten zurückgeben | 2.2 |
Information | Zeitverschiebung | gibt ein Datum in verschiedenen Formaten zurück, wobei die angegebene Anzahl von Sekunden/Minuten/Stunden/Tagen hinzugefügt wird | 3.3 |
Information | Protokoll | eine Nachricht protokollieren (oder anzeigen) (und den Wert zurückgeben) | 2.2 |
Information | anmelden | eine Nachricht protokollieren (oder anzeigen) (leerer Rückgabewert) | 2.2 |
Eingang | StringFromFile | liest eine Zeile aus einer Datei | 1.9 |
Eingang | FileToString | eine ganze Datei lesen | 2.4 |
Eingang | CSVLesen | aus einer CSV-Datei mit Trennzeichen lesen | 1.9 |
Eingang | XPath | Verwenden Sie einen XPath-Ausdruck, um aus einer Datei zu lesen | 2.0.3 |
Eingang | StringToFile | einen String in eine Datei schreiben | 5.2 |
Berechnung | Zähler | generiert eine aufsteigende Zahl | 1.X |
Formatierung | dateTimeConvert | Konvertieren Sie ein Datum oder eine Uhrzeit vom Quell- in das Zielformat | 4.0 |
Berechnung | verdauen | Digest generieren (SHA-1, SHA-256, MD5...) | 4.0 |
Berechnung | intSum | Int-Zahlen hinzufügen | 1.8.1 |
Berechnung | langeSumme | lange Zahlen hinzufügen | 2.3.2 |
Berechnung | Zufällig | eine Zufallszahl generieren | 1.9 |
Berechnung | Zufälliges Datum | Generieren Sie ein zufälliges Datum innerhalb eines bestimmten Datumsbereichs | 3.3 |
Berechnung | RandomFromMultipleVars | extrahiert ein Element aus den Werten einer Reihe von Variablen, die durch | getrennt sind | 3.1 |
Berechnung | ZufallsString | Generieren Sie eine zufällige Zeichenfolge | 2.6 |
Berechnung | UUID | Generieren Sie eine zufällige UUID vom Typ 4 | 2.9 |
Skripterstellung | groovig | Führen Sie ein Apache Groovy-Skript aus | 3.1 |
Skripterstellung | Bohnenschale | Führen Sie ein BeanShell-Skript aus | 1.X |
Skripterstellung | Javascript | JavaScript verarbeiten (Nashorn) | 1.9 |
Skripterstellung | jexl2 | einen Commons-Jexl2-Ausdruck auswerten | jexl2(2.1.1) |
Skripterstellung | jexl3 | einen Commons-Jexl3-Ausdruck auswerten | jexl3 (3.0) |
Eigenschaften | istPropDefined | Testen Sie, ob eine Eigenschaft vorhanden ist | 4.0 |
Eigenschaften | Eigentum | Lesen Sie eine Eigenschaft | 2.0 |
Eigenschaften | P | Lesen einer Eigenschaft (Kurzschriftmethode) | 2.0 |
Eigenschaften | setProperty | Legen Sie eine JMeter-Eigenschaft fest | 2.1 |
Variablen | Teilt | Teilen Sie einen String in Variablen auf | 2.0.2 |
Variablen | auswerten | Werten Sie einen Variablenausdruck aus | 2.3.1 |
Variablen | BewertungVar | einen in einer Variablen gespeicherten Ausdruck auswerten | 2.3.1 |
Eigenschaften | ist VarDefined | Testen Sie, ob eine Variable existiert | 4.0 |
Variablen | v | Werten Sie einen Variablennamen aus | 2.3RC3 |
Schnur | verkohlen | Generieren Sie Unicode-Zeichenwerte aus einer Liste von Zahlen | 2.3.3 |
Schnur | changeCase | Ändern Sie den Fall nach verschiedenen Modi | 4.0 |
Schnur | FluchtHtml | Codieren Sie Zeichenfolgen mit HTML-Codierung | 2.3.3 |
Schnur | escapeOroRegexpChars | Zitieren Sie Metazeichen, die vom regulären ORO-Ausdruck verwendet werden | 2.9 |
Schnur | entkommenXml | Codieren Sie Zeichenfolgen mithilfe der XML-Codierung | 3.2 |
Schnur | Regex-Funktion | Vorherige Antwort mit einem regulären Ausdruck parsen | 1.X |
Schnur | nicht entkommen | Strings verarbeiten, die Java-Escapes enthalten (z. B. \n & \t) | 2.3.3 |
Schnur | unescapeHtml | Decodieren Sie HTML-codierte Zeichenfolgen | 2.3.3 |
Schnur | URL-Code | Entschlüsseln Sie eine application/x-www-form-urlencoded-Zeichenfolge | 2.10 |
Schnur | URL-Code | Codieren Sie einen String in einen application/x-www-form-urlencoded-String | 2.10 |
Schnur | TestplanName | Rückgabename des aktuellen Testplans | 2.6 |
20.1 Was Funktionen können ¶
Es gibt zwei Arten von Funktionen: benutzerdefinierte statische Werte (oder Variablen) und integrierte Funktionen.
Benutzerdefinierte statische Werte ermöglichen es dem Benutzer, Variablen zu definieren, die durch ihren statischen Wert ersetzt werden, wenn ein Testbaum kompiliert und zur Ausführung übermittelt wird. Dieser Austausch erfolgt einmalig zu Beginn des Testlaufs. Dies könnte zum Beispiel verwendet werden, um das DOMAIN-Feld aller HTTP-Anforderungen zu ersetzen – wodurch es einfach wird, einen Test so zu ändern, dass er denselben Test auf einen anderen Server ausrichtet.
Beachten Sie, dass Variablen derzeit nicht verschachtelt werden können; dh ${Var${N}} funktioniert nicht. Dazu kann die Funktion __V (Variable) verwendet werden: ${__V(Var${N})} . Sie können auch ${__BeanShell(vars.get("Var${N}")} verwenden .
Diese Art des Austauschs ist ohne Funktionen möglich, war aber weniger bequem und weniger intuitiv. Benutzer mussten Standardkonfigurationselemente erstellen, die leere Werte von Samplern ausfüllen würden. Variablen ermöglichen es, nur einen Teil eines bestimmten Werts zu ersetzen und nicht nur leere Werte auszufüllen.
Mit integrierten Funktionen können Benutzer zur Laufzeit neue Werte basierend auf früheren Antwortdaten, dem Thread, in dem sich die Funktion befindet, der Zeit und vielen anderen Quellen berechnen. Diese Werte werden im Laufe des Tests für jede Anfrage neu generiert.
20.2 Wo können Funktionen und Variablen verwendet werden? ¶
Funktionen und Variablen können in jedes Feld jeder Testkomponente geschrieben werden (außer dem TestPlan - siehe unten). Einige Felder lassen keine zufälligen Zeichenfolgen zu, da sie Zahlen erwarten und daher keine Funktion akzeptieren. Die meisten Felder lassen jedoch Funktionen zu.
Funktionen, die im Testplan verwendet werden, unterliegen einigen Einschränkungen. JMeter-Thread-Variablen wurden nicht vollständig eingerichtet, wenn die Funktionen verarbeitet werden, sodass als Parameter übergebene Variablennamen nicht eingerichtet werden und Variablenreferenzen nicht funktionieren, sodass split() und regex() und die Variablenauswertungsfunktionen funktionieren. Ich arbeite nicht. Die Funktion threadNum() funktioniert nicht (und ist auf Testplanebene nicht sinnvoll). Die folgenden Funktionen sollten auf dem Testplan funktionieren:
- intSum
- langeSumme
- Maschinenname
- Bohnenschale
- groovig
- Javascript
- jexl2/jexl3
- zufällig
- Zeit
- Eigentumsfunktionen
- Log-Funktionen
Konfigurationselemente werden von einem separaten Thread verarbeitet. Daher funktionieren Funktionen wie __threadNum in Elementen wie benutzerdefinierten Variablen nicht richtig. Beachten Sie auch, dass in einem UDV-Element definierte Variablen nicht verfügbar sind, bis das Element verarbeitet wurde.
Element aus Tabelle auswählen, wobei name='${VAR}'nicht
Element aus Tabelle auswählen, wobei Name=${VAR}(es sei denn , VAR selbst enthält die Anführungszeichen)
20.3 Referenzieren von Variablen und Funktionen ¶
Der Verweis auf eine Variable in einem Testelement erfolgt durch Einklammern des Variablennamens in ' ${ ' und ' } '.
Auf Funktionen wird auf die gleiche Weise verwiesen, aber per Konvention beginnen die Namen von Funktionen mit " __ ", um Konflikte mit Benutzerwertnamen * zu vermeiden . Einige Funktionen nehmen Argumente, um sie zu konfigurieren, und diese stehen in Klammern, durch Kommas getrennt. Wenn die Funktion keine Argumente akzeptiert, können die Klammern weggelassen werden.
Argumentwerte, die selbst Kommas enthalten, sollten nach Bedarf maskiert werden. Wenn Sie ein Komma in Ihren Parameterwert einfügen müssen, maskieren Sie es wie folgt: ' \, '. Dies gilt beispielsweise für die Skriptfunktionen - Javascript, Beanshell, Jexl, Groovy - wo es notwendig ist, Kommas zu maskieren, die in Skriptmethodenaufrufen benötigt werden - z
${__BeanShell(vars.put("name"\,"value"))}
Alternativ können Sie Ihr Skript als Variable definieren, z. B. auf dem Testplan:
SCRIPT vars.put("name","wert")Das Skript kann dann wie folgt referenziert werden:
${__BeanShell(${SCRIPT})}Es ist nicht erforderlich, Kommas in der SCRIPT -Variablen zu maskieren, da der Funktionsaufruf analysiert wird, bevor die Variable durch ihren Wert ersetzt wird. Dies funktioniert gut in Verbindung mit den JSR223- oder BeanShell-Samplern, da diese zum Testen von Javascript-, Jexl- und BeanShell-Skripten verwendet werden können.
Funktionen können auf Variablen und andere Funktionen verweisen, zum Beispiel verwendet ${__XPath(${__P(xpath.file),${XPATH})} die Eigenschaft " xpath.file " als Dateinamen und den Inhalt der Variablen XPATH als der Ausdruck, nach dem gesucht werden soll.
JMeter bietet ein Tool, mit dem Sie Funktionsaufrufe für verschiedene integrierte Funktionen erstellen können, die Sie dann kopieren und einfügen können. Werte werden nicht automatisch für Sie maskiert, da Funktionen Parameter für andere Funktionen sein können und Sie nur Werte maskieren sollten, die Sie als Literal beabsichtigen.
Der Wert einer Variablen oder Funktion kann mit der Funktion __logn() gemeldet werden . Die Funktionsreferenz __logn() kann überall im Testplan verwendet werden, nachdem die Variable definiert wurde. Alternativ kann der Java-Request-Sampler verwendet werden, um ein Beispiel mit Variablenreferenzen zu erstellen; die Ausgabe wird im entsprechenden Listener angezeigt. Beachten Sie, dass es einen Debug-Sampler gibt, der verwendet werden kann, um die Werte von Variablen usw. im Tree View Listener anzuzeigen.
20.4 Der Funktionshelfer-Dialog ¶
Das Dialogfeld "Funktionshilfe" ist im Menü "Extras" von JMeter verfügbar.
Mit dem Funktionshelfer können Sie eine Funktion aus dem Pulldown-Menü auswählen und ihren Argumenten Werte zuweisen. Die linke Spalte in der Tabelle enthält eine kurze Beschreibung des Arguments, und in die rechte Spalte schreiben Sie den Wert für dieses Argument ein. Unterschiedliche Funktionen nehmen unterschiedliche Argumente entgegen.
Wenn Sie dies getan haben, klicken Sie auf die Schaltfläche "Generieren", und die entsprechende Zeichenfolge wird generiert, damit Sie sie an beliebiger Stelle in Ihren Testplan kopieren und einfügen können.
20.5 Funktionen ¶
__regexFunktion ¶
Die Regex-Funktion wird verwendet, um die vorherige Antwort (oder den Wert einer Variablen) mithilfe eines beliebigen regulären Ausdrucks (vom Benutzer bereitgestellt) zu analysieren. Die Funktion gibt die Vorlagenzeichenfolge mit ausgefüllten Variablenwerten zurück.
Die __regexFunction kann auch Werte für die zukünftige Verwendung speichern. Im sechsten Parameter können Sie einen Referenznamen angeben. Nachdem diese Funktion ausgeführt wurde, können dieselben Werte später mithilfe der Syntax für benutzerdefinierte Werte abgerufen werden. Wenn Sie beispielsweise " refName " als sechsten Parameter eingeben, können Sie Folgendes verwenden:
- ${refName} , um auf das berechnete Ergebnis des zweiten Parameters ("Vorlage für die Ersetzungszeichenfolge") zu verweisen, das von dieser Funktion analysiert wurde
- ${refName_g0} , um auf die gesamte von dieser Funktion geparste Übereinstimmung zu verweisen.
- ${refName_g1} , um auf die erste Gruppe zu verweisen, die von dieser Funktion geparst wird.
- ${refName_g#} , um auf die n -te Gruppe zu verweisen, die von dieser Funktion geparst wird.
- ${refName_matchNr} , um auf die Anzahl der von dieser Funktion gefundenen Gruppen zu verweisen.
Parameter ¶
- Eine Ganzzahl - Weist JMeter an, diese Übereinstimmung zu verwenden. ' 1 ' für die erste gefundene Übereinstimmung, ' 2 ' für die zweite und so weiter
- RAND - Weist JMeter an, zufällig eine Übereinstimmung auszuwählen.
- ALL - Weist JMeter an, alle Übereinstimmungen zu verwenden und für jede eine Vorlagenzeichenfolge zu erstellen und sie dann alle zusammen anzuhängen. Diese Option wird wenig genutzt.
- Eine Gleitkommazahl zwischen 0 und 1 - weist JMeter an, die X -te Übereinstimmung mit der Formel zu finden: (number_of_matches_found * float_number) gerundet auf die nächste Ganzzahl.
Gespeicherte Werte sind ${refName} (die Ersetzungsvorlagenzeichenfolge) und ${refName_g#}, wobei „ # “ die Gruppennummer aus dem regulären Ausdruck ist („ 0 “ kann verwendet werden, um auf die gesamte Übereinstimmung zu verweisen).
__Zähler ¶
Der Zähler generiert bei jedem Aufruf eine neue Zahl, beginnend mit 1 und jeweils um +1 inkrementierend. Der Zähler kann so konfiguriert werden, dass die Werte jedes simulierten Benutzers getrennt bleiben oder derselbe Zähler für alle Benutzer verwendet wird. Wenn die Werte jedes Benutzers separat erhöht werden, entspricht dies dem Zählen der Anzahl der Iterationen durch den Testplan. Ein globaler Zähler ist wie das Zählen, wie oft diese Anfrage ausgeführt wurde.
Der Zähler verwendet eine Integer-Variable, um die Zählung zu halten, die daher maximal 2.147.483.647 beträgt.
Die Zählerfunktionsinstanzen sind vollständig unabhängig. Der globale Zähler – „ FALSE “ – wird von jeder Zählerinstanz separat gepflegt.
Mehrere __counter- Funktionsaufrufe in derselben Iteration erhöhen den Wert nicht weiter.
Wenn Sie einen Zählwert haben möchten, der sich für jedes Sample erhöht, verwenden Sie die Funktion in einem Pre-Processor wie User Parameters .
Parameter ¶
Gespeicherte Werte haben das Format ${refName} . Auf diese Weise können Sie einen Zähler behalten und an mehreren Stellen auf seinen Wert verweisen.
__threadNum ¶
Die Thread-Nummernfunktion gibt einfach die Nummer des aktuell ausgeführten Threads zurück. Diese Nummern sind in Bezug auf ihre ThreadGroup nur lokal eindeutig, was bedeutet, dass Thread Nr. 1 in einer Threadgruppe aus Sicht dieser Funktion nicht von Thread Nr. 1 in einer anderen Threadgruppe zu unterscheiden ist.
ctx.getThreadNum()
Für diese Funktion gibt es keine Argumente.
Anwendungsbeispiel:
${__threadNum}gibt eine Zahl zwischen 1 und der maximalen Anzahl von laufenden Threads zurück, die in der enthaltenden Thread-Gruppe konfiguriert sind
__threadGroupName ¶
Die Funktion Name der Thread-Gruppe gibt einfach den Namen der Thread-Gruppe zurück, die gerade ausgeführt wird.
Für diese Funktion gibt es keine Argumente.
Anwendungsbeispiel:
${__threadGroupName}
__intSumme ¶
Die intSum-Funktion kann verwendet werden, um die Summe von zwei oder mehr ganzzahligen Werten zu berechnen.
Parameter ¶
Beispiele:
${__intSum(2,5,MYVAR)}gibt 7 (2+5) zurück und speichert das Ergebnis in der Variablen MYVAR. Also ist ${MYVAR} gleich 7.
${__intSum(2,5,7)}gibt 14 (2+5+7) zurück und speichert das Ergebnis in der Variablen MYVAR.
${__intSum(1,2,5,${MYVAR})}gibt 16 zurück, wenn der MYVAR-Wert gleich 8 ist, 1+2+5+${MYVAR})
__langeSumme ¶
Die longSum-Funktion kann verwendet werden, um die Summe von zwei oder mehr langen Werten zu berechnen, verwenden Sie diese anstelle von __intSum, wenn Sie wissen, dass Ihre Werte nicht im Intervall -2147483648 bis 2147483647 liegen.
Parameter ¶
Beispiele:
${__longSum(2,5,MYVAR)}gibt 7 (2+5) zurück und speichert das Ergebnis in der Variablen MYVAR. Also ist ${MYVAR} gleich 7.
${__longSum(2,5,7)}gibt 14 (2+5+7) zurück und speichert das Ergebnis in der Variablen MYVAR.
${__longSum(1,2,5,${MYVAR})}gibt 16 zurück, wenn der MYVAR-Wert gleich 8 ist, 1+2+5+${MYVAR})
__StringFromFile ¶
Die StringFromFile-Funktion kann verwendet werden, um Zeichenfolgen aus einer Textdatei zu lesen. Dies ist nützlich für die Ausführung von Tests, die viele variable Daten erfordern. Wenn Sie beispielsweise eine Bankanwendung testen, können Hunderte oder Tausende verschiedener Kontonummern erforderlich sein.
Siehe auch das CSV-Datensatz-Konfigurationstestelement, das möglicherweise einfacher zu verwenden ist. Dies unterstützt jedoch derzeit nicht mehrere Eingabedateien.
Bei jedem Aufruf liest es die nächste Zeile aus der Datei. Alle Threads teilen sich dieselbe Instanz, sodass verschiedene Threads unterschiedliche Zeilen erhalten. Wenn das Ende der Datei erreicht ist, beginnt sie wieder von vorne zu lesen, es sei denn, die maximale Schleifenanzahl wurde erreicht. Wenn in einem Testskript mehrere Verweise auf die Funktion vorhanden sind, wird die Datei unabhängig voneinander geöffnet, auch wenn die Dateinamen identisch sind. [Wenn der Wert an anderer Stelle wiederverwendet werden soll, verwenden Sie für jeden Funktionsaufruf unterschiedliche Variablennamen.]
Wenn beim Öffnen oder Lesen der Datei ein Fehler auftritt, gibt die Funktion die Zeichenfolge „ **ERR** “ zurück.
Parameter ¶
Der Dateinamenparameter wird aufgelöst, wenn die Datei geöffnet oder erneut geöffnet wird.
Der Parameter Referenzname (sofern angegeben) wird bei jeder Ausführung der Funktion aufgelöst.
Verwendung von Sequenznummern:
Bei Verwendung der optionalen Sequenznummern wird der Pfadname als Formatzeichenfolge für java.text.DecimalFormat verwendet . Als einziger Parameter wird die aktuelle Sequenznummer übergeben. Wenn die optionale Startnummer nicht angegeben ist, wird der Pfadname unverändert verwendet. Nützliche Formatierungssequenzen sind:
- #
- Geben Sie die Nummer ein, ohne führende Nullen oder Leerzeichen
- 000
- fügen Sie die auf drei Ziffern gepackte Nummer ggf. mit führenden Nullen ein
- pin#'.'dat
- Erzeugt die Ziffern ohne führende Nullen und behandelt den Punkt wörtlich wie
pin1.dat , …, pin9.dat , pin10.dat , …, pin9999.dat - pin000'.'dat
- Erzeugt führende Nullen, während der Punkt beibehalten wird. Wenn die Nummern beginnen, mehr Ziffern als die drei Ziffern zu haben, die dieses Format vorschlägt, verwendet die Sequenz mehr Ziffern, wie in
pin001.dat , … pin099.dat , …, pin999.dat , …, pin9999.dat zu sehen ist - pin'.'dat#
- Wird Ziffern ohne führende Nullen anhängen, dabei den Punkt beibehalten und
pin.dat1 , …, pin.dat9 , …, pin.dat999 erzeugen
Wenn mehr Ziffern erforderlich sind, als Formatierungszeichen vorhanden sind, wird die Zahl entsprechend erweitert.
Um zu verhindern, dass ein Formatierungszeichen interpretiert wird, schließen Sie es in einfache Anführungszeichen ein. Beachten Sie, dass " . " ein Formatierungszeichen ist und in einfache Anführungszeichen gesetzt werden muss
(obwohl #. und 000. in Gebietsschemata wie erwartet funktionieren, in denen das Dezimalzeichen ebenfalls " . " ist)
.
In anderen Gebietsschemata (z. B. fr ) das Dezimalzeichen ist " , " - was bedeutet, dass " #. " zu " nnn, " wird.
Ausführliche Informationen finden Sie in der Dokumentation zu DecimalFormat .
Enthält der Pfadname keine besonderen Formatierungszeichen, wird die aktuelle laufende Nummer an den Namen angehängt, ansonsten wird die Nummer gemäß der Formatierungsvorschrift eingefügt.
Wenn die Startsequenznummer weggelassen wird und die Endsequenznummer angegeben wird, wird die Sequenznummer als Schleifenzähler interpretiert und die Datei wird höchstens " End "-mal verwendet. In diesem Fall wird der Dateiname nicht formatiert.
${__StringFromFile(PIN#'.'DAT,,1,2)} - liest PIN1.DAT , PIN2.DAT
${__StringFromFile(PIN.DAT,,,2)} - liest PIN.DAT zweimal
Beachten Sie, dass die " . " in PIN.DAT oben solltenicht zitiert werden. In diesem Fall wird die Startnummer weggelassen, sodass der Dateiname unverändert verwendet wird.
__Maschinenname ¶
Die machineName-Funktion gibt den lokalen Hostnamen zurück. Dies verwendet die Java-Methode InetAddress.getLocalHost() und übergibt sie an getHostName()
Parameter ¶
Beispiele:
${__machineName()}gibt den Hostnamen der Maschine zurück
${__machineName}gibt den Hostnamen der Maschine zurück
__machineIP ¶
Die machineIP-Funktion gibt die lokale IP-Adresse zurück. Dies verwendet die Java-Methode InetAddress.getLocalHost() und übergibt sie an getHostAddress()
Parameter ¶
Beispiele:
${__machineIP()}gibt die IP-Adresse der Maschine zurück
${__machineIP}gibt die IP-Adresse der Maschine zurück
__javaScript ¶
Die javaScript-Funktion führt ein Stück JavaScript-Code (nicht Java!) aus und gibt seinen Wert zurück
Die JMeter-JavaScript-Funktion ruft einen eigenständigen JavaScript-Interpreter auf. Javascript wird als Skriptsprache verwendet, damit Sie Berechnungen usw. durchführen können.
Informationen zur Rhino-Engine finden Sie in der Mozilla Rhino-Übersicht
Folgende Variablen werden dem Skript zur Verfügung gestellt:
- log - der Logger für die Funktion
- ctx - JMeterContext- Objekt
- vars - JMeterVariables- Objekt
- threadName – Zeichenfolge, die den aktuellen Threadnamen enthält
- sampler - aktuelles Sampler - Objekt (falls vorhanden)
- sampleResult – vorheriges SampleResult- Objekt (falls vorhanden)
- props - JMeterProperties (Klasse java.util.Properties )-Objekt
Rhinoscript ermöglicht den Zugriff auf statische Methoden über sein Packages-Objekt. Siehe die Scripting Java- Dokumentation. Auf die statischen Methoden von JMeterContextService kann man beispielsweise so zugreifen: Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()
Parameter ¶
- new Date() - gibt das aktuelle Datum und die Uhrzeit zurück
- Math.floor(Math.random()*(${maxRandom}+1)) – eine Zufallszahl zwischen 0 und der Variable maxRandom
- ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) – eine Zufallszahl zwischen den Variablen minRandom und maxRandom
- "${VAR}"=="abcd"
${__javaScript('${sp}'.slice(7\,99999))}das Komma nach 7 wird maskiert.
Beispiele:
${__javaScript(neues Datum())}kehrt am Sa., 09. Jan. 2016, 16:22:15 GMT+0100 (MEZ) zurück
${__javaScript(neues Datum(),MYDATE)}wird am Sa. 09.01.2016 16:22:15 GMT+0100 (CET) zurückgegeben und unter Variable MYDATE gespeichert
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}verwendet die maxRandom-Variable, gibt einen Zufallswert zwischen 0 und maxRandom zurück und speichert ihn in MYRESULT
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}verwendet maxRandom- und minRandom- Variablen, gibt einen zufälligen Wert zwischen maxRandom und minRandom zurück und speichert ihn unter der Variablen MYRESULT
${__javaScript("${VAR}"=="abcd",MYRESULT)}vergleicht den Wert der Variablen VAR mit abcd , gibt wahr oder falsch zurück und speichert das Ergebnis in MYRESULT
__Zufällig ¶
Die Zufallsfunktion gibt eine Zufallszahl zurück, die zwischen den angegebenen Min- und Max-Werten liegt.
Parameter ¶
Beispiele:
${__Random(0,10)}gibt eine Zufallszahl zwischen 0 und 10 zurück
${__Random(0,10, MYVAR)}gibt eine Zufallszahl zwischen 0 und 10 zurück und speichert sie in MYVAR . ${MYVAR} enthält die Zufallszahl
__RandomDate ¶
Die RandomDate-Funktion gibt ein zufälliges Datum zurück, das zwischen den angegebenen Werten für Startdatum und Enddatum liegt.
Parameter ¶
Beispiele:
${__RandomDate(,,2050-07-08,,)}gibt ein zufälliges Datum zwischen jetzt und dem 08.07.2050 zurück . Zum Beispiel 2039-06-21
${__RandomDate(dd MM yyyy,,08 07 2050,,)}gibt ein zufälliges Datum mit einem benutzerdefinierten Format wie 04 03 2034 zurück
__RandomString ¶
Die RandomString-Funktion gibt einen zufälligen String der Länge zurück, wobei Zeichen in zu verwendenden Zeichen verwendet werden.
Parameter ¶
Beispiele:
${__RandomString(5)}gibt eine zufällige Zeichenfolge von 5 Zeichen zurück, die lesbar sein kann oder nicht
${__RandomString(10,abcdefg)}gibt eine zufällige Zeichenfolge von 10 Zeichen zurück, die aus dem abcdefg -Satz ausgewählt wurden, wie cdbgdbeebd oder adbfeggfad , …
${__RandomString(6,a12zeczclk, MYVAR)}gibt eine zufällige Zeichenfolge von 6 Zeichen zurück, die aus einem Satz von 12zeczclk ausgewählt wurde , und speichert das Ergebnis in MYVAR , MYVAR enthält Zeichenfolgen wie 2z22ak oder z11kce , …
__RandomFromMultipleVars ¶
Die Funktion RandomFromMultipleVars gibt basierend auf den von Source Variables bereitgestellten Variablenwerten einen Zufallswert zurück .
Die Variablen können einfach oder mehrwertig sein, da sie von den folgenden Extraktoren generiert werden können:- Grenzextraktor
- Extraktor für reguläre Ausdrücke
- CSS-Selektor-Extraktor
- JSON-Extraktor
- XPath-Extraktor
- XPath2-Extraktor
Parameter ¶
Beispiele:
${__RandomFromMultipleVars(val)}gibt eine zufällige Zeichenfolge basierend auf dem Inhalt der Variablen val zurück, wobei berücksichtigt wird, ob sie mehrwertig sind oder nicht
${__RandomFromMultipleVars(val1|val2)}gibt eine zufällige Zeichenfolge basierend auf dem Inhalt der Variablen val1 und val2 zurück, wobei berücksichtigt wird, ob sie mehrwertig sind oder nicht
${__RandomFromMultipleVars(val1|val2, MYVAR)}gibt eine zufällige Zeichenfolge basierend auf dem Inhalt der Variablen val1 und val2 zurück, wobei berücksichtigt wird, ob sie mehrwertig sind oder nicht, und das Ergebnis in MYVAR gespeichert wird
__UUID ¶
Die UUID-Funktion gibt einen pseudozufälligen Typ 4 Universally Unique IDentifier (UUID) zurück.
Parameter ¶
Beispiele:
${__UUID()}gibt UUIDs mit diesem Format zurück: c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd
__CSVRead ¶
Die Funktion CSVRead gibt einen String aus einer CSV-Datei zurück (vgl . StringFromFile )
HINWEIS: JMeter unterstützt mehrere Dateinamen.
In den meisten Fällen ist das neuere CSV-Datensatz-Konfigurationselement einfacher zu verwenden.
Wenn ein Dateiname zum ersten Mal angetroffen wird, wird die Datei geöffnet und in ein internes Array eingelesen. Wenn eine Leerzeile erkannt wird, wird dies als Dateiende behandelt – dies ermöglicht die Verwendung von abschließenden Kommentaren.
Alle nachfolgenden Verweise auf denselben Dateinamen verwenden dasselbe interne Array. Beachten Sie, dass die Groß- und Kleinschreibung des Dateinamens für die Funktion von Bedeutung ist, auch wenn sich das Betriebssystem nicht darum kümmert, sodass CSVRead(abc.txt,0) und CSVRead(aBc.txt,0) auf unterschiedliche interne Arrays verweisen würden.
Die *ALIAS- Funktion ermöglicht das mehrmalige Öffnen derselben Datei und ermöglicht auch kürzere Dateinamen.
Jeder Thread hat seinen eigenen internen Zeiger auf seine aktuelle Zeile im Dateiarray. Wenn ein Thread zum ersten Mal auf die Datei verweist, wird ihr die nächste freie Zeile im Array zugewiesen, sodass jeder Thread auf eine andere Zeile als alle anderen Threads zugreift. [Es sei denn, es gibt mehr Threads als Zeilen im Array.]
Parameter ¶
Beispielsweise könnten Sie einige Variablen wie folgt einrichten:
- COL1a ${__CSVRead(random.txt,0)}
- COL2a ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
- COL1b ${__CSVRead(random.txt,0)}
- COL2b ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
__Eigenschaft ¶
Die Eigenschaftsfunktion gibt den Wert einer JMeter-Eigenschaft zurück. Wenn der Eigenschaftswert nicht gefunden werden kann und kein Standardwert angegeben wurde, wird der Eigenschaftsname zurückgegeben. Wenn Sie einen Standardwert angeben, müssen Sie keinen Funktionsnamen angeben – der Parameter kann auf null gesetzt werden und wird ignoriert.
Zum Beispiel:
- ${__property(user.dir)} - Rückgabewert von user.dir
- ${__property(user.dir,UDIR)} - Rückgabewert von user.dir und in UDIR speichern
- ${__property(abcd,ABCD,atod)} - Rückgabewert der Eigenschaft abcd (oder " atod " falls nicht definiert) und in ABCD speichern
- ${__property(abcd,,atod)} - Rückgabewert der Eigenschaft abcd (oder " atod " falls nicht definiert), aber nicht speichern
Parameter ¶
__P ¶
Dies ist eine vereinfachte Eigenschaftsfunktion, die für die Verwendung mit Eigenschaften vorgesehen ist, die auf der Befehlszeile definiert werden. Im Gegensatz zur Funktion __property gibt es keine Option zum Speichern des Werts in einer Variablen, und wenn kein Standardwert angegeben wird, wird angenommen, dass er 1 ist. Der Wert 1 wurde gewählt, weil er für allgemeine Testvariablen wie Schleifen gültig ist. Threadzahl, Ramp Up etc.
Zum Beispiel:Definieren Sie den Eigenschaftswert:
jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.eduWerte abrufen:
${__P(group1.threads)} - gibt den Wert von group1.threads zurück
${__P(group1.loops)} - gibt den Wert von group1.loops zurück
${__P(hostname,www.dummy.org) } - Rückgabewert der Eigenschaft hostname oder www.dummy.org , falls nicht definiert
In den obigen Beispielen würde der erste Funktionsaufruf 7 zurückgeben , der zweite würde 1 zurückgeben und der letzte würde www.dummy.org zurückgeben (sofern diese Eigenschaften nicht definiert wurden anderswo!)
Parameter ¶
__log ¶
Die Protokollfunktion protokolliert eine Nachricht und gibt ihre Eingabezeichenfolge zurück
Parameter ¶
Die Protokollebenennamen OUT und ERR werden verwendet, um die Ausgabe an System.out bzw. System.err zu leiten . In diesem Fall wird die Ausgabe immer gedruckt - es hängt nicht von der aktuellen Protokolleinstellung ab.
- ${__log(Nachricht)}
- in die Protokolldatei geschrieben als " … Thread Name : Message "
- ${__log(Nachricht,AUS)}
- in das Konsolenfenster geschrieben
- ${__log(${VAR},,,VAR=)}
- in die Protokolldatei geschrieben als " … Thread-Name VAR=Wert "
__logn ¶
Die logn-Funktion protokolliert eine Nachricht und gibt die leere Zeichenfolge zurück
Parameter ¶
Die Protokollebenennamen OUT und ERR werden verwendet, um die Ausgabe an System.out bzw. System.err zu leiten . In diesem Fall wird die Ausgabe immer gedruckt - es hängt nicht von der aktuellen Protokolleinstellung ab.
- ${__logn(VAR1=${VAR1},OUT)}
- Schreiben Sie den Wert der Variablen in das Konsolenfenster
__BeanShell ¶
Die BeanShell-Funktion wertet das übergebene Skript aus und gibt das Ergebnis zurück.
Ausführliche Informationen zur Verwendung von BeanShell finden Sie auf der BeanShell-Website unter http://www.beanshell.org/
Eine einzelne Instanz einer Funktion kann von mehreren Threads aufgerufen werden. Allerdings wird die Methode execute() synchronisiert.
Wenn die Eigenschaft „ beanshell.function.init “ definiert ist, wird sie als Name einer Quelldatei an den Interpreter übergeben. Dies kann verwendet werden, um allgemeine Methoden und Variablen zu definieren. Es gibt eine Beispiel-Init-Datei im bin-Verzeichnis: BeanShellFunction.bshrc .
Die folgenden Variablen werden gesetzt, bevor das Skript ausgeführt wird:
- log - der Logger für die BeanShell-Funktion (*)
- ctx - JMeterContext- Objekt
- vars - JMeterVariables- Objekt
- props - JMeterProperties (Klasse java.util.Properties )-Objekt
- ThreadName - der ThreadName (String)
- Sampler - der aktuelle Sampler , falls vorhanden
- SampleResult – das aktuelle SampleResult , falls vorhanden
Parameter ¶
Beispiel:
- ${__BeanShell(123*456)}
- gibt 56088 zurück
- ${__BeanShell(source("function.bsh"))}
- verarbeitet das Skript in function.bsh
__groovy ¶
Die __groovy- Funktion wertet an sie übergebene Apache-Groovy - Skripte aus und gibt das Ergebnis zurück.
Wenn die Eigenschaft " groovy.utilities " definiert ist, wird sie von der ScriptEngine geladen. Dies kann verwendet werden, um allgemeine Methoden und Variablen zu definieren. Es gibt eine Beispiel-Init-Datei im bin - Verzeichnis: Utility.groovy .
Die folgenden Variablen werden gesetzt, bevor das Skript ausgeführt wird:
- log - der Logger für die Groovy-Funktion (*)
- ctx - JMeterContext- Objekt
- vars - JMeterVariables- Objekt
- props - JMeterProperties (Klasse java.util.Properties )-Objekt
- ThreadName - der ThreadName (String)
- sampler - der aktuelle Sampler , falls vorhanden
- prev - das vorherige SampleResult , falls vorhanden
- OUT - System.aus
(*) bedeutet, dass dies gesetzt wird, bevor die Init-Datei, falls vorhanden, verarbeitet wird. Andere Variablen variieren von Aufruf zu Aufruf.
Führen Sie zum Beispiel Folgendes nicht aus:
${__groovy("${myVar}".substring(0\,2))}
Stellen Sie sich vor, die Variable myVar ändert sich mit jeder Transaktion, Groovy oben kann nicht zwischengespeichert werden, da sich das Skript jedes Mal ändert.
Führen Sie stattdessen Folgendes aus, das zwischengespeichert werden kann:
${__groovy(vars.get("myVar").substring(0\,2))}
Parameter ¶
Beispiel:
-
${__groovy(123*456)}
- gibt 56088 zurück
-
${__groovy(vars.get("myVar").substring(0\,2))}
- Wenn der Wert von var JMeter ist , gibt es JM zurück , während es String.substring(0,2) ausführt . Beachten Sie, dass , nach \ maskiert wurde,
__split ¶
Die Split-Funktion teilt die an sie übergebene Zeichenfolge gemäß dem Trennzeichen und gibt die ursprüngliche Zeichenfolge zurück. Wenn Trennzeichen nebeneinander stehen, wird " ? " als Wert zurückgegeben. Die aufgeteilten Strings werden in den Variablen ${VAR_1} , ${VAR_2} usw. zurückgegeben. Die Anzahl der Variablen wird in ${VAR_n} zurückgegeben . Ein abschließendes Trennzeichen wird als fehlende Variable behandelt und „ ? “ wird zurückgegeben. Damit es besser mit dem ForEach-Controller funktioniert, löscht __split jetzt auch die erste nicht verwendete Variable, falls sie durch eine vorherige Aufteilung festgelegt wurde.
Beispiel: VAR =" a||c| " im Testplandefinieren .
${__split(${VAR},VAR,|)}
Dies gibt den Inhalt von VAR zurück , dh " a||c| " und setzt die folgenden Variablen:
VAR_n = 4
VAR_1 = a
VAR_2 = ?
VAR_3 = c
VAR_4 = ?
VAR_5 = null
Parameter ¶
__XPfad ¶
Die XPath-Funktion liest eine XML-Datei und gleicht den XPath ab. Bei jedem Aufruf der Funktion wird die nächste Übereinstimmung zurückgegeben. Am Ende der Datei wird zum Anfang umgebrochen. Wenn keine Knoten übereinstimmen, gibt die Funktion die leere Zeichenfolge zurück und eine Warnmeldung wird in die JMeter-Protokolldatei geschrieben.
${__XPath(/path/to/build.xml, //target/@name)}Dadurch werden alle Ziele in build.xml abgeglichen und der Inhalt des nächsten Namensattributs zurückgegeben
Parameter ¶
__setProperty ¶
Die Funktion setProperty setzt den Wert einer JMeter-Eigenschaft. Der Standardrückgabewert der Funktion ist die leere Zeichenfolge, sodass der Funktionsaufruf überall dort verwendet werden kann, wo Funktionen gültig sind.
Der ursprüngliche Wert kann zurückgegeben werden, indem der optionale 3. Parameter auf „ true “ gesetzt wird.
Eigenschaften sind für JMeter global und können daher zur Kommunikation zwischen Threads und Thread-Gruppen verwendet werden
Parameter ¶
__Zeit ¶
Die Zeitfunktion gibt die aktuelle Uhrzeit in verschiedenen Formaten zurück.
Parameter ¶
Wenn der Formatstring weggelassen wird, gibt die Funktion die aktuelle Zeit in Millisekunden seit der Epoche zurück. Wenn das Format mit „ /ddd “ übereinstimmt (wobei ddd Dezimalziffern sind), gibt die Funktion die aktuelle Zeit in Millisekunden dividiert durch den Wert von ddd zurück . Beispielsweise gibt " /1000 " die aktuelle Zeit in Sekunden seit der Epoche zurück. Andernfalls wird die aktuelle Uhrzeit an SimpleDateFormat übergeben. Die folgenden abgekürzten Aliase werden bereitgestellt:
- YMD = jjjjMMtt
- HMS = HHmmss
- YMDHMS = jjjjMMtt-HHmmss
- USER1 = was auch immer in der JMeter-Eigenschaft time.USER1 steht
- USER2 = was auch immer in der JMeter-Eigenschaft time.USER2 steht
Die Standardwerte können geändert werden, indem die entsprechende JMeter-Eigenschaft gesetzt wird, z. B. time.YMD=yyMMdd
${__time(dd/MM/yyyy,)}wird am 21.01.2018 zurückkehren, wenn es am 21. Januar 2018 lief
${__time(YMD,)}gibt 20180121 zurück, wenn es am 21. Januar 2018 ausgeführt wird
${__time()}gibt die Zeit in Millis 1516540541624 zurück
__jexl2 ¶
Die jexl - Funktion gibt das Ergebnis der Auswertung eines Commons JEXL - Ausdrucks zurück . Siehe Links unten für weitere Informationen zu JEXL-Ausdrücken.
Die Funktion __jexl2 verwendet Commons JEXL 2
Parameter ¶
Folgende Variablen werden dem Skript zur Verfügung gestellt:
- log - der Logger für die Funktion
- ctx - JMeterContext- Objekt
- vars - JMeterVariables- Objekt
- props - JMeterProperties (Klasse java.util.Properties )-Objekt
- threadName – Zeichenfolge, die den aktuellen Threadnamen enthält
- sampler - aktuelles Sampler - Objekt (falls vorhanden)
- sampleResult – vorheriges SampleResult- Objekt (falls vorhanden)
- OUT - System.out - zB OUT.println("Nachricht")
Jexl kann auch Klassen erstellen und Methoden darauf aufrufen, zum Beispiel:
Systemclass=log.class.forName("java.lang.System"); now=Systemclass.currentTimeMillis();Beachten Sie, dass die Jexl-Dokumentation auf der Website fälschlicherweise vorschlägt, dass " div " eine Ganzzahldivision durchführt. Tatsächlich führen „ div “ und „ / “ beide eine normale Division durch. Man kann den gleichen Effekt wie folgt erzielen:
i= 5 / 2; i.intValue(); // oder verwende i.longValue()
__jexl3 ¶
Die jexl - Funktion gibt das Ergebnis der Auswertung eines Commons JEXL - Ausdrucks zurück . Siehe Links unten für weitere Informationen zu JEXL-Ausdrücken.
Die Funktion __jexl3 verwendet Commons JEXL 3
Parameter ¶
Folgende Variablen werden dem Skript zur Verfügung gestellt:
- log - der Logger für die Funktion
- ctx - JMeterContext- Objekt
- vars - JMeterVariables- Objekt
- props - JMeterProperties (Klasse java.util.Properties )-Objekt
- threadName – Zeichenfolge, die den aktuellen Threadnamen enthält
- sampler - aktuelles Sampler - Objekt (falls vorhanden)
- sampleResult – vorheriges SampleResult- Objekt (falls vorhanden)
- OUT - System.out - zB OUT.println("Nachricht")
Jexl kann auch Klassen erstellen und Methoden darauf aufrufen, zum Beispiel:
Systemclass=log.class.forName("java.lang.System"); now=Systemclass.currentTimeMillis();Beachten Sie, dass die Jexl-Dokumentation auf der Website fälschlicherweise vorschlägt, dass " div " eine Ganzzahldivision durchführt. Tatsächlich führen „ div “ und „ / “ beide eine normale Division durch. Man kann den gleichen Effekt wie folgt erzielen:
i= 5 / 2; i.intValue(); // oder verwende i.longValue()
__V ¶
Die Funktion V (Variable) gibt das Ergebnis der Auswertung eines Variablennamensausdrucks zurück. Dies kann verwendet werden, um verschachtelte Variablenreferenzen auszuwerten (die derzeit nicht unterstützt werden).
Wenn man zum Beispiel die Variablen A1 , A2 und N = 1 hat :
- ${A1} - funktioniert einwandfrei
- ${A${N}} - funktioniert nicht (verschachtelte Variablenreferenz)
- ${__V(A${N})} - funktioniert einwandfrei. A${N} wird zu A1 und die Funktion __V gibt den Wert von A1 zurück
Parameter ¶
__evalVar ¶
Die Funktion evalVar gibt das Ergebnis der Auswertung eines in einer Variablen gespeicherten Ausdrucks zurück.
Dies ermöglicht es, einen String aus einer Datei zu lesen und alle darin enthaltenen Variablenreferenzen zu verarbeiten. Wenn beispielsweise die Variable „ query “ „ select ${column} from ${table} “ enthält und „ column “ und „ table “ „ name “ und „ customers “ enthalten, dann wird ${__evalVar(query)} ausgewertet als " Namen von Kunden auswählen ".
__evaluieren ¶
Die eval-Funktion gibt das Ergebnis der Auswertung eines Zeichenfolgenausdrucks zurück.
Dies ermöglicht es, Variablen- und Funktionsreferenzen in einem String zu interpolieren, der in einer Variablen gespeichert ist. Zum Beispiel, wenn die folgenden Variablen gegeben sind:
- Name = Schmidt
- Spalte = Alter
- Tabelle = Geburtstage
- SQL = wähle ${column} aus ${table} aus, wobei name='${name}'
Dies kann in Verbindung mit CSV-Datensatz verwendet werden, beispielsweise wenn sowohl die SQL-Anweisungen als auch die Werte in der Datendatei definiert sind.
__char ¶
Die Funktion char gibt das Ergebnis der Auswertung einer Liste von Zahlen als Unicode-Zeichen zurück. Siehe auch __unescape() unten.
Dies ermöglicht es, beliebige Zeichenwerte in Felder einzufügen.
Parameter ¶
Beispiele:
${__char(13,10)} = ${__char(0xD,0xA)} = ${__char(015,012)} = CRLF
${__char(165)} = ¥ (Yen)
__unescape ¶
Die unescape-Funktion gibt das Ergebnis der Auswertung einer Java-escaped-Zeichenfolge zurück. Siehe auch __char() oben.
Dadurch können Zeichen zu Feldern hinzugefügt werden, die ansonsten schwierig (oder unmöglich) über die GUI zu definieren sind.
Parameter ¶
Beispiele:
${__unescape(\r\n)} = CRLF
${__unescape(1\t2)} = 1 [tab] 2
__unescapeHtml ¶
Funktion zum Aufheben der Escapezeichen einer Zeichenfolge, die HTML-Entity-Escapezeichen enthält, in eine Zeichenfolge, die die tatsächlichen Unicode-Zeichen enthält, die den Escapezeichen entsprechen. Unterstützt HTML 4.0-Entitäten.
Zum Beispiel die Zeichenfolge
${__unescapeHtml(<Francçais>)}gibt <Français> zurück .
Wenn eine Entität nicht erkannt wird, wird sie in Ruhe gelassen und wörtlich in die Ergebniszeichenfolge eingefügt. zB ${__unescapeHtml(>&zzzz;x)} gibt >&zzzz;x zurück .
Verwendet StringEscapeUtils#unescapeHtml(String) von Commons Lang.
Parameter ¶
__escapeHtml ¶
Funktion, die die Zeichen in einem String mithilfe von HTML-Entities maskiert. Unterstützt HTML 4.0-Entitäten.
Zum Beispiel,
${__escapeHtml("Brot" & "Butter")}zurück: "Brot" &Ampere; "Butter" .
Verwendet StringEscapeUtils#escapeHtml(String) von Commons Lang.
Parameter ¶
__urldecode ¶
Funktion zum Decodieren einer application/x-www-form-urlencoded- Zeichenfolge. Hinweis: Verwenden Sie UTF-8 als Kodierungsschema.
Zum Beispiel die Zeichenfolge
${__urldecode(Wort+%22school%22+ist+%22%C3%A9cole%22+auf+Französisch)}zurück Das Wort "school" ist "école" auf Französisch .
Verwendet die Java-Klasse URLDecoder .
Parameter ¶
__urlencode ¶
Funktion zum Codieren eines Strings in einen application/x-www-form-urlencoded- String.
Zum Beispiel die Zeichenfolge
${__urlencode(Wort "school" ist "école" auf Französisch)}gibt Word+%22school%22+is+%22%C3%A9cole%22+in+französisch zurück .
Verwendet die Java-Klasse URLEncoder .
Parameter ¶
__FileToString ¶
Die FileToString-Funktion kann verwendet werden, um eine ganze Datei zu lesen. Bei jedem Aufruf wird die gesamte Datei gelesen.
Wenn beim Öffnen oder Lesen der Datei ein Fehler auftritt, gibt die Funktion die Zeichenfolge „ **ERR** “ zurück.
Parameter ¶
Die Parameter Dateiname, Kodierung und Referenzname werden bei jeder Ausführung der Funktion aufgelöst.
__samplerName ¶
Die Funktion samplerName gibt den Namen (dh Label) des aktuellen Samplers zurück.
Die Funktion funktioniert nicht in Testelementen, die keinen zugeordneten Sampler haben. Zum Beispiel der Testplan. Konfigurationselemente haben auch keinen zugeordneten Sampler. Einige Konfigurationselemente werden jedoch direkt von Samplern referenziert, wie z. B. dem HTTP-Header-Manager und dem HTTP-Cookie-Manager, und in diesem Fall werden die Funktionen im Kontext des HTTP-Samplers aufgelöst. Pre-Processors, Post-Processors und Assertions haben immer einen zugehörigen Sampler.
Beispiel:
${__samplerName()}
Parameter ¶
__TestPlanName ¶
Die Funktion TestPlanName gibt den Namen des aktuellen Testplans zurück (kann in Einschließen von Plänen verwendet werden, um den Namen des aufrufenden Testplans zu ermitteln).
Beispiel:
${__TestPlanName}gibt den Dateinamen Ihres Testplans zurück, wenn sich der Plan beispielsweise in einer Datei mit dem Namen Demo.jmx befindet, wird „ Demo.jmx “ zurückgegeben
__escapeOroRegexpChars ¶
Funktion, die die ORO Regexp-Metazeichen maskiert, sie ist das Äquivalent von \Q \E in der Java Regexp Engine.
Zum Beispiel,
${__escapeOroRegexpChars([^"].+?,)}gibt zurück: \[\^\"\]\.\+\? .
Verwendet Perl5Compiler#quotemeta(String) von ORO.
Parameter ¶
__escapeXml ¶
Funktion, die die Zeichen in einem String mithilfe von XML 1.0-Entitäten maskiert.
Zum Beispiel,
${__escapeXml("Brot" & 'Butter')}gibt zurück: "Brot" &Ampere; "Butter" .
Verwendet StringEscapeUtils#escapeXml10(String) von Commons Lang.
Parameter ¶
__timeShift ¶
Die timeShift-Funktion gibt ein Datum im angegebenen Format zurück, wobei die angegebene Anzahl von Sekunden, Minuten, Stunden, Tagen oder Monaten hinzugefügt wird
Parameter ¶
- PT20.345S wird als 20,345 Sekunden geparst
- PT15M analysiert als 15 Minuten
- PT10H analysiert als 10 Stunden
- P2D analysiert als 2 Tage
- -P6H3M analysiert als -6 Stunden und -3 Minuten
Beispiele:
${__timeShift(dd/MM/yyyy,21/01/2018,P2D,,)}Rücksendung am 23.01.2018
${__timeShift(dd MMMM yyyy,21 fevrier 2018,P2D,fr_FR,)}Rücksendung 23. Februar 2018
__digest ¶
Die Digest-Funktion gibt einen verschlüsselten Wert im spezifischen Hash-Algorithmus mit optionalem Salt, Großbuchstaben und Variablennamen zurück.
Parameter ¶
- MD2
- MD5
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512
Beispiele:
${__digest(MD5,Errare humanum est,,,)}gibt c49f00b92667a35c63708933384dad52 zurück
${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}gibt a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7 zurück
__dateTimeConvert ¶
Die Funktion __dateTimeConvert wandelt ein Datum im Quellformat in ein Zielformat um und speichert das Ergebnis optional im Variablennamen.
Parameter ¶
Beispiel:
${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}Rücksendung am 21.01.2018
Mit Epochenzeitwert: 1526574881000,
${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}gibt den 17.05.2018 16:34 in UTC-Zeit zurück (-Duser.timezone=GMT)
__isPropDefined ¶
Die Funktion __isPropDefined gibt true zurück, wenn die Eigenschaft vorhanden ist, oder false, wenn nicht.
Parameter ¶
Beispiel:
${__isPropDefined(START.HMS)}wird wahr zurückgeben
__isVarDefined ¶
Die Funktion __isVarDefined gibt true zurück, wenn die Variable vorhanden ist, oder false, wenn nicht.
Parameter ¶
Beispiel:
${__isVarDefined(JMeterThread.last_sample_ok)}wird wahr zurückgeben
__changeCase ¶
Die Funktion zum Ändern der Groß-/Kleinschreibung gibt einen Zeichenfolgenwert zurück, dessen Groß-/Kleinschreibung nach einem bestimmten Modus geändert wurde. Das Ergebnis kann optional in einer JMeter-Variablen gespeichert werden.
Parameter ¶
- OBERE Ergebnis als AB-CD EF
- UNTERES Ergebnis als ab-cd ed
- GROSSBUCHSTABEN Ergebnis als Ab-CD eF
Beispiele:
${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}wird AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL zurückgeben
${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}wird Arbeit omnia vincit improbus zurückgeben
${__changeCase(omnibus viis romam pervenitur,CAPITALIZE,)}wird Omnibus viis romam pervenitur zurückgeben
__StringToFile ¶
Die Funktion __StringToFile kann verwendet werden, um einen String in eine Datei zu schreiben. Jedes Mal, wenn es aufgerufen wird, schreibt es eine Zeichenkette in die Datei, die angehängt oder überschrieben wird.
Der Standardrückgabewert der Funktion ist die leere Zeichenfolge
Parameter ¶
Wenn Sie einen Zeilenumbruch in Ihren Inhalt einfügen müssen, verwenden Sie \n in Ihrer Zeichenfolge.
20.6 Vordefinierte Variablen ¶
Die meisten Variablen werden durch Aufrufen von Funktionen oder durch Testelemente wie benutzerdefinierte Variablen gesetzt; In diesem Fall hat der Benutzer die volle Kontrolle über den verwendeten Variablennamen. Einige Variablen werden jedoch intern von JMeter definiert. Diese sind unten aufgeführt.
- COOKIE_cookiename - enthält den Cookie-Wert (siehe HTTP Cookie Manager )
- JMeterThread.last_sample_ok – ob das letzte Sample OK war oder nicht – true / false . Hinweis: Dies wird aktualisiert, nachdem PostProcessors und Assertions ausgeführt wurden.
- START- Variablen (siehe nächster Abschnitt)
20.6 Vordefinierte Eigenschaften ¶
Der Satz von JMeter-Eigenschaften wird aus den beim Start von JMeter definierten Systemeigenschaften initialisiert; Zusätzliche JMeter-Eigenschaften werden in jmeter.properties , user.properties oder in der Befehlszeile definiert.
Einige integrierte Eigenschaften werden von JMeter definiert. Diese sind unten aufgelistet. Der Einfachheit halber werden die START- Eigenschaften auch in gleichnamige Variablen kopiert.
- START.MS - JMeter-Startzeit in Millisekunden
- START.YMD – JMeter-Startzeit als jjjjMMtt
- START.HMS – JMeter-Startzeit als HHmmss
- TESTSTART.MS - Startzeit des Tests in Millisekunden
Bitte beachten Sie, dass die START -Variablen/Eigenschaften die Startzeit von JMeter darstellen, nicht die Startzeit des Tests. Sie sind hauptsächlich für die Verwendung in Dateinamen usw.