20. Fonctions et variables

Les fonctions JMeter sont des valeurs spéciales qui peuvent remplir les champs de n'importe quel Sampler ou autre élément dans un arbre de test. Un appel de fonction ressemble à ceci :

${__functionName(var1,var2,var3)}

Où "__functionName" correspond au nom d'une fonction.
Des parenthèses entourent les paramètres envoyés à la fonction, par exemple ${__time(YMD)} Les paramètres réels varient d'une fonction à l'autre. Les fonctions qui ne nécessitent aucun paramètre peuvent omettre les parenthèses, par exemple ${__threadNum} .

Si un paramètre de fonction contient une virgule, assurez-vous de l'échapper avec " \ ", sinon JMeter le traitera comme un délimiteur de paramètre. Par exemple:

${__time(EEE\, j MMM aaaa)}
Si la virgule n'est pas échappée - par exemple ${__javaScript(Math.max(2,5))} - vous obtiendrez une erreur telle que :
ERREUR - jmeter.functions.JavaScript : erreur lors du traitement de Javascript : [Math.max(2])
    org.mozilla.javascript.EvaluatorException : missing ) après la liste d'arguments (<cmd>#1)
 
C'est parce que la chaîne " Math.max(2,5) " est traitée comme étant deux paramètres de la fonction __javascript :
Math.max(2 et 5)
D'autres messages d'erreur sont possibles.

Les variables sont référencées comme suit :

${VARIABLE}

Si une fonction ou une variable indéfinie est référencée, JMeter ne signale/enregistre pas d'erreur - la référence est renvoyée inchangée. Par exemple, si UNDEF n'est pas défini comme une variable, la valeur de ${UNDEF} est ${UNDEF} . Les variables, fonctions (et propriétés) sont toutes sensibles à la casse. JMeter supprime les espaces des noms de variables avant utilisation, donc par exemple ${__Random(1,63, LOTTERY )} utilisera la variable ' LOTTERY ' plutôt que '  LOTTERY  '.

Les propriétés ne sont pas les mêmes que les variables. Les variables sont locales à un thread ; Les propriétés sont communes à tous les threads et doivent être référencées à l'aide de la fonction __P ou __property .
Lorsque vous utilisez \ avant une variable pour un chemin Windows, par exemple C:\test\${test} , assurez-vous d'échapper au \ sinon JMeter n'interprétera pas la variable, exemple : C:\\test\\${test} .
Alternativement, utilisez simplement / à la place du séparateur de chemin - par exemple C:/test/${test} - Les JVM Windows convertiront les séparateurs si nécessaire.

Liste des fonctions, vaguement regroupées en types.

Type de fonctionNomCommentaireDepuis
Informations threadNumobtenir le numéro de fil1 FOIS
Informations threadGroupNameobtenir le nom du groupe de threads4.1
Informations samplerNameobtenir le nom de l'échantillonneur (étiquette)2.5
Informations machineIPobtenir l'adresse IP de la machine locale2.6
Informations nom de la machineobtenir le nom de la machine locale1 FOIS
Informations tempsrenvoie l'heure actuelle dans différents formats2.2
Informations décalage dans le tempsrenvoie une date dans différents formats avec le nombre spécifié de secondes/minutes/heures/jours ajoutés3.3
Informations Journalenregistrer (ou afficher) un message (et renvoyer la valeur)2.2
Informations se connecterconsigner (ou afficher) un message (valeur de retour vide)2.2
Saisir ChaîneDepuisFichierlire une ligne d'un fichier1.9
Saisir FichierVersChaînelire un fichier entier2.4
Saisir CSVLirelire à partir d'un fichier CSV délimité1.9
Saisir XPathUtiliser une expression XPath pour lire à partir d'un fichier2.0.3
Saisir ChaîneVersFichierécrire une chaîne dans un fichier5.2
Calcul compteurgénérer un nombre qui s'incrémente1 FOIS
Mise en page dateTimeConvertConvertir une date ou une heure du format source au format cible4.0
Calcul digérerGénérer un résumé (SHA-1, SHA-256, MD5...)4.0
Calcul inSumajouter des nombres entiers1.8.1
Calcul somme longueajouter de longs nombres2.3.2
Calcul Aléatoiregénérer un nombre aléatoire1.9
Calcul DateAléatoiregénérer une date aléatoire dans une plage de dates spécifique3.3
Calcul RandomFromMultipleVarsextrait un élément des valeurs d'un ensemble de variables séparées par |3.1
Calcul RandomStringgénérer une chaîne aléatoire2.6
Calcul UUIDgénérer un UUID aléatoire de type 42.9
Script sensationnelexécuter un script Apache Groovy3.1
Script Coquille de haricotexécuter un script BeanShell1 FOIS
Script JavaScripttraiter JavaScript (Nashorn)1.9
Script jexl2évaluer une expression Commons Jexl2jexl2(2.1.1)
Script jexl3évaluer une expression Commons Jexl3jexl3 (3.0)
Propriétés isPropDefined Tester si une propriété existe4.0
Propriétés propriété lire un bien2.0
Propriétés Plire une propriété (méthode abrégée)2.0
Propriétés setPropertydéfinir une propriété JMeter2.1
variables diviserDiviser une chaîne en variables2.0.2
variables evalévaluer une expression variable2.3.1
variables evalVarévaluer une expression stockée dans une variable2.3.1
Propriétés isVarDefined Tester si une variable existe4.0
variables Vévaluer un nom de variable2.3RC3
Chaîne de caractères carbonisergénérer des valeurs de caractères Unicode à partir d'une liste de nombres2.3.3
Chaîne de caractères changerCaseChanger de cas en suivant différents modes4.0
Chaîne de caractères escapeHtmlEncoder les chaînes à l'aide de l'encodage HTML2.3.3
Chaîne de caractères escapeOroRegexpCharsciter les méta-caractères utilisés par l'expression régulière ORO2.9
Chaîne de caractères escapeXmlEncoder les chaînes à l'aide de l'encodage XML3.2
Chaîne de caractères regexFunctionanalyser la réponse précédente à l'aide d'une expression régulière1 FOIS
Chaîne de caractères uneévasionTraiter les chaînes contenant des échappements Java (par exemple \n & \t)2.3.3
Chaîne de caractères unescapeHtmlDécoder les chaînes encodées en HTML2.3.3
Chaîne de caractères urldecodeDécoder une chaîne application/x-www-form-urlencoded2.10
Chaîne de caractères code d'URLEncoder une chaîne en une chaîne application/x-www-form-urlencoded2.10
Chaîne de caractères TestPlanNameRenvoie le nom du plan de test actuel2.6

20.1 Que peuvent faire les fonctions

Il existe deux types de fonctions : les valeurs statiques (ou variables) définies par l'utilisateur et les fonctions intégrées.
Les valeurs statiques définies par l'utilisateur permettent à l'utilisateur de définir des variables à remplacer par leur valeur statique lorsqu'un arbre de test est compilé et soumis pour exécution. Ce remplacement a lieu une fois au début de l'exécution du test. Cela pourrait être utilisé pour remplacer le champ DOMAIN de toutes les requêtes HTTP, par exemple - ce qui simplifie la modification d'un test pour cibler un serveur différent avec le même test.

Notez que les variables ne peuvent actuellement pas être imbriquées ; c'est-à -dire que ${Var${N}} ne fonctionne pas. La fonction __V (variable) peut être utilisée pour cela : ${__V(Var${N})} . Vous pouvez également utiliser ${__BeanShell(vars.get("Var${N}")} .

Ce type de remplacement est possible sans fonctions, mais était moins pratique et moins intuitif. Cela obligeait les utilisateurs à créer des éléments de configuration par défaut qui rempliraient les valeurs vides des échantillonneurs. Les variables permettent de ne remplacer qu'une partie d'une valeur donnée, pas seulement de remplir des valeurs vides.

Avec les fonctions intégrées, les utilisateurs peuvent calculer de nouvelles valeurs au moment de l'exécution en fonction des données de réponse précédentes, du thread dans lequel se trouve la fonction, de l'heure et de nombreuses autres sources. Ces valeurs sont générées pour chaque demande tout au long du test.

Les fonctions sont partagées entre les threads. Chaque occurrence d'un appel de fonction dans un plan de test est gérée par une instance de fonction distincte.

20.2 Où peut-on utiliser des fonctions et des variables ?

Les fonctions et les variables peuvent être écrites dans n'importe quel champ de n'importe quel composant de test (à l'exception du TestPlan - voir ci-dessous). Certains champs n'autorisent pas les chaînes aléatoires car ils attendent des nombres et n'accepteront donc pas de fonction. Cependant, la plupart des champs autoriseront les fonctions.

Les fonctions utilisées sur le plan de test ont certaines restrictions. Les variables de thread JMeter n'auront pas été entièrement configurées lorsque les fonctions seront traitées, donc les noms de variables passés en tant que paramètres ne seront pas configurés et les références de variables ne fonctionneront pas, donc split () et regex () et les fonctions d'évaluation de variable ne seront pas ça marche. La fonction threadNum() ne fonctionnera pas (et n'a pas de sens au niveau du plan de test). Les fonctions suivantes devraient fonctionner correctement sur le plan de test :

  • inSum
  • somme longue
  • nom de la machine
  • Coquille de haricot
  • sensationnel
  • JavaScript
  • jexl2/jexl3
  • Aléatoire
  • temps
  • fonctions de propriété
  • fonctions de journalisation

Les éléments de configuration sont traités par un thread séparé. Par conséquent, les fonctions telles que __threadNum ne fonctionnent pas correctement dans des éléments tels que les variables définies par l'utilisateur. Notez également que les variables définies dans un élément UDV ne sont pas disponibles tant que l'élément n'a pas été traité.

Lorsque vous utilisez des références de variable/fonction dans le code SQL (etc.), n'oubliez pas d'inclure les guillemets nécessaires pour les chaînes de texte, c'est-à-dire utilisez
SELECT élément de la table où name='${VAR}'
ne pas
SELECT élément de la table où nom=${VAR}
(sauf si VAR lui-même contient les guillemets)

20.3 Comment référencer des variables et des fonctions

Le référencement d'une variable dans un élément de test se fait en encadrant le nom de la variable avec ' ${ ' et ' } '.

Les fonctions sont référencées de la même manière, mais par convention, les noms des fonctions commencent par " __ " pour éviter tout conflit avec les noms de valeur utilisateur * . Certaines fonctions prennent des arguments pour les configurer, et ceux-ci vont entre parenthèses, délimités par des virgules. Si la fonction ne prend aucun argument, les parenthèses peuvent être omises.

Les valeurs d'argument qui contiennent elles-mêmes des virgules doivent être échappées si nécessaire. Si vous devez inclure une virgule dans la valeur de votre paramètre, échappez-la comme suit : ' \, '. Cela s'applique par exemple aux fonctions de script - Javascript, Beanshell, Jexl, groovy - où il est nécessaire d'échapper les virgules qui peuvent être nécessaires dans les appels de méthode de script - par exemple

${__BeanShell(vars.put("nom"\,"valeur"))}

Vous pouvez également définir votre script en tant que variable, par exemple sur le plan de test :

SCRIPT vars.put("nom","valeur")
Le script peut alors être référencé comme suit :
${__BeanShell(${SCRIPT})}
Il n'est pas nécessaire d'échapper des virgules dans la variable SCRIPT car l'appel de fonction est analysé avant que la variable ne soit remplacée par sa valeur. Cela fonctionne bien en conjonction avec les échantillonneurs JSR223 ou BeanShell, car ceux-ci peuvent être utilisés pour tester les scripts Javascript, Jexl et BeanShell.

Les fonctions peuvent référencer des variables et d'autres fonctions, par exemple ${__XPath(${__P(xpath.file),${XPATH})} utilisera la propriété " xpath.file " comme nom de fichier et le contenu de la variable XPATH comme l'expression à rechercher.

JMeter fournit un outil pour vous aider à construire des appels de fonction pour diverses fonctions intégrées, que vous pouvez ensuite copier-coller. Il n'échappera pas automatiquement les valeurs pour vous, car les fonctions peuvent être des paramètres d'autres fonctions, et vous ne devez échapper que les valeurs que vous souhaitez utiliser comme littérales.

Si une chaîne contient une barre oblique inverse (' \ ') et contient également une fonction ou une référence de variable, la barre oblique inverse sera supprimée si elle apparaît avant ' $ ' ou ' , ' ou ' \ '. Ce comportement est nécessaire pour autoriser les fonctions imbriquées qui incluent des virgules ou la chaîne ${ . Les barres obliques inverses avant ' $ ' ou ' , ' ou ' \ ' ne sont pas supprimées si la chaîne ne contient pas de référence de fonction ou de variable.

La valeur d'une variable ou d'une fonction peut être signalée à l'aide de la fonction __logn() . La référence de fonction __logn() peut être utilisée n'importe où dans le plan de test une fois la variable définie. Alternativement, l'échantillonneur Java Request peut être utilisé pour créer un échantillon contenant des références de variable ; la sortie sera affichée dans l'écouteur approprié. Notez qu'il existe un échantillonneur de débogage qui peut être utilisé pour afficher les valeurs des variables, etc. dans l'écouteur de l'arborescence.

* Si vous définissez une variable statique définie par l'utilisateur avec le même nom qu'une fonction intégrée, votre variable statique remplacera la fonction intégrée.

20.4 La boîte de dialogue Function Helper

La boîte de dialogue Function Helper est disponible dans le menu Outils de JMeter.

Boîte de dialogue de l'assistant de fonction
Boîte de dialogue de l'assistant de fonction

À l'aide de l'assistant de fonction, vous pouvez sélectionner une fonction dans le menu déroulant et attribuer des valeurs à ses arguments. La colonne de gauche du tableau fournit une brève description de l'argument, et la colonne de droite est l'endroit où vous écrivez la valeur de cet argument. Différentes fonctions prennent des arguments différents.

Une fois que vous avez fait cela, cliquez sur le bouton "générer", et la chaîne appropriée est générée pour que vous puissiez la copier-coller dans votre plan de test où vous le souhaitez.

20.5 Fonctions

__regexFonction

La fonction Regex est utilisée pour analyser la réponse précédente (ou la valeur d'une variable) à l'aide de n'importe quelle expression régulière (fournie par l'utilisateur). La fonction renvoie la chaîne de modèle avec les valeurs variables renseignées.

Le __regexFunction peut également stocker des valeurs pour une utilisation future. Dans le sixième paramètre, vous pouvez spécifier un nom de référence. Après l'exécution de cette fonction, les mêmes valeurs peuvent être récupérées ultérieurement à l'aide de la syntaxe des valeurs définies par l'utilisateur. Par exemple, si vous saisissez " refName " comme sixième paramètre, vous pourrez utiliser :

  • ${refName} pour faire référence au résultat calculé du deuxième paramètre ("Modèle pour la chaîne de remplacement") analysé par cette fonction
  • ${refName_g0} pour faire référence à la correspondance entière analysée par cette fonction.
  • ${refName_g1} pour faire référence au premier groupe analysé par cette fonction.
  • ${refName_g#} pour faire référence au n ième groupe analysé par cette fonction.
  • ${refName_matchNr} pour faire référence au nombre de groupes trouvés par cette fonction.
Si vous utilisez des tests distribués, assurez-vous de changer de mode (voir jmeter.properties ) afin qu'il ne s'agisse pas d'un décapage, voir le bogue 56376

Paramètres

Attribut
La description
Obligatoire
Premier argument
Le premier argument est l'expression régulière à appliquer aux données de réponse. Il saisira tous les matchs. Assurez-vous de mettre entre parenthèses toutes les parties de cette expression que vous souhaitez utiliser dans votre chaîne de modèle. Exemple : <a href="(.*)"> . Cela saisira la valeur du lien et le stockera en tant que premier groupe (il n'y a qu'un seul groupe). Autre exemple : <input type="hidden" name="(.*)" value="(.*)"> . Cela saisira le nom en tant que premier groupe et la valeur en tant que deuxième groupe. Ces valeurs peuvent être utilisées dans votre chaîne de modèle
Oui
Deuxième argument
Il s'agit de la chaîne de modèle qui remplacera la fonction au moment de l'exécution. Pour faire référence à un groupe capturé dans l'expression régulière, utilisez la syntaxe : $[group_number]$ . C'est-à -dire : $1$ , ou $2$ . Votre modèle peut être n'importe quelle chaîne.
Oui
Troisième argument
Le troisième argument indique à JMeter quelle correspondance utiliser. Votre expression régulière peut trouver de nombreuses correspondances. Vous avez quatre choix :
  • Un entier - Indique à JMeter d'utiliser cette correspondance. ' 1 ' pour la première correspondance trouvée, ' 2 ' pour la seconde, etc.
  • RAND - Dit à JMeter de choisir une correspondance au hasard.
  • ALL - Indique à JMeter d'utiliser toutes les correspondances et de créer une chaîne de modèle pour chacune, puis de les ajouter toutes ensemble. Cette option est peu utilisée.
  • Un nombre flottant entre 0 et 1 - indique à JMeter de trouver la X ème correspondance en utilisant la formule : (number_of_matches_found * float_number) arrondi à l'entier le plus proche.
Non, par défaut=1
Quatrième argument
Si ' ALL ' a été sélectionné pour la valeur d'argument ci-dessus, alors cet argument sera inséré entre chaque copie ajoutée de la valeur du modèle.
Non
Cinquième argument
Valeur par défaut renvoyée si aucune correspondance n'est trouvée
Non
Sixième argument
Un nom de référence pour réutiliser les valeurs analysées par cette fonction.
Les valeurs stockées sont ${refName} (la chaîne de modèle de remplacement) et ${refName_g#} où " # " est le numéro de groupe de l'expression régulière (" 0 " peut être utilisé pour faire référence à la correspondance entière).
Non
Septième argument
Nom de la variable d'entrée. Si spécifié, la valeur de la variable est utilisée comme entrée au lieu d'utiliser le résultat de l'échantillon précédent.
Non
^

__compteur

Le compteur génère un nouveau numéro à chaque appel, en commençant par 1 et en incrémentant de +1 à chaque fois. Le compteur peut être configuré pour séparer les valeurs de chaque utilisateur simulé ou pour utiliser le même compteur pour tous les utilisateurs. Si les valeurs de chaque utilisateur sont incrémentées séparément, cela revient à compter le nombre d'itérations dans le plan de test. Un compteur global revient à compter le nombre de fois que cette requête a été exécutée.

Le compteur utilise une variable entière pour contenir le décompte, qui a donc un maximum de 2 147 483 647.

Les instances de la fonction compteur sont complètement indépendantes. Le compteur global - " FALSE " - est maintenu séparément par chaque instance de compteur.

Plusieurs appels de fonction __counter dans la même itération n'incrémenteront pas davantage la valeur.
Si vous souhaitez avoir un décompte qui s'incrémente pour chaque échantillon, utilisez la fonction dans un préprocesseur tel que Paramètres utilisateur .

Paramètres

Attribut
La description
Obligatoire
Premier argument
TRUE si vous souhaitez que le compteur de chaque utilisateur simulé reste indépendant et séparé des autres utilisateurs. FALSE pour un compteur global.
Oui
Deuxième argument
Un nom de référence pour réutiliser la valeur créée par cette fonction.
Les valeurs stockées sont de la forme ${refName} . Cela vous permet de garder un compteur et de vous référer à sa valeur à plusieurs endroits.
Non
^

__threadNum

La fonction de numéro de thread renvoie simplement le numéro du thread en cours d'exécution. Ces numéros ne sont uniques que localement par rapport à leur groupe de threads, ce qui signifie que le thread n° 1 dans un groupe de threads est indiscernable du thread n° 1 dans un autre groupe de threads, du point de vue de cette fonction.

La fonction renvoie un nombre compris entre un et le nombre maximal de threads en cours d'exécution. Notez que si vous utilisez le code JSR223 avec l' objet JMeterContext (variable ctx ), le code ci-dessous renvoie un nombre compris entre zéro et (nombre maximum de threads en cours d'exécution moins un)
ctx.getThreadNum()

Il n'y a pas d'arguments pour cette fonction.

Exemple d'utilisation :

${__threadNum}
renvoie un nombre compris entre 1 et le nombre maximal de threads en cours d'exécution configurés dans le groupe de threads contenant

Cette fonction ne fonctionne dans aucun élément de configuration (par exemple, les variables définies par l'utilisateur) car celles-ci sont exécutées à partir d'un thread séparé. Cela n'a pas non plus de sens de l'utiliser sur le plan de test.
^

__threadGroupName

La fonction de nom de groupe de threads renvoie simplement le nom du groupe de threads en cours d'exécution.

Il n'y a pas d'arguments pour cette fonction.

Exemple d'utilisation :

${__threadGroupName}

Cette fonction ne fonctionne dans aucun élément de configuration (par exemple, les variables définies par l'utilisateur) car celles-ci sont exécutées à partir d'un thread séparé. Cela n'a pas non plus de sens de l'utiliser sur le plan de test.
^

__intSum

La fonction intSum peut être utilisée pour calculer la somme de deux ou plusieurs valeurs entières.

Le nom de référence est facultatif, mais il ne doit pas être un entier valide.

Paramètres

Attribut
La description
Obligatoire
Premier argument
La première valeur int.
Oui
Deuxième argument
La deuxième valeur int.
Oui
nième argument
La n ième valeur entière.
Non
dernière dispute
Un nom de référence pour réutiliser la valeur calculée par cette fonction. S'il est spécifié, le nom de référence doit contenir au moins un caractère non numérique, sinon il sera traité comme une autre valeur int à ajouter.
Non

Exemples:

${__intSum(2,5,MAVAR)}
renverra 7 (2+5) et stockera le résultat dans la variable MYVAR. Donc ${MYVAR} sera égal à 7.
${__intSum(2,5,7)}
renverra 14 (2+5+7) et stockera le résultat dans la variable MYVAR.
${__intSum(1,2,5,${MAVAR})}
renverra 16 si la valeur de MYVAR est égale à 8, 1+2+5+${MYVAR})

^

__longSum

La fonction longSum peut être utilisée pour calculer la somme de deux valeurs longues ou plus, utilisez-la au lieu de __intSum chaque fois que vous savez que vos valeurs ne seront pas dans l'intervalle -2147483648 à 2147483647.

Paramètres

Attribut
La description
Obligatoire
Premier argument
La première valeur longue.
Oui
Deuxième argument
La deuxième valeur longue.
Oui
nième argument
La n ième valeur longue.
Non
dernière dispute
Un nom de référence pour réutiliser la valeur calculée par cette fonction. S'il est spécifié, le nom de référence doit contenir au moins un caractère non numérique, sinon il sera traité comme une autre valeur longue à ajouter.
Non

Exemples:

${__longSum(2,5,MAVAR)}
renverra 7 (2+5) et stockera le résultat dans la variable MYVAR. Donc ${MYVAR} sera égal à 7.
${__longSum(2,5,7)}
renverra 14 (2+5+7) et stockera le résultat dans la variable MYVAR.
${__longSum(1,2,5,${MYVAR})}
renverra 16 si la valeur de MYVAR est égale à 8, 1+2+5+${MYVAR})

^

__StringFromFile

La fonction StringFromFile peut être utilisée pour lire des chaînes à partir d'un fichier texte. Ceci est utile pour exécuter des tests qui nécessitent beaucoup de données variables. Par exemple, lors du test d'une application bancaire, des centaines ou des milliers de numéros de compte différents peuvent être nécessaires.

Voir également l' élément de test CSV Data Set Config qui peut être plus facile à utiliser. Cependant, cela ne prend actuellement pas en charge plusieurs fichiers d'entrée.

Chaque fois qu'il est appelé, il lit la ligne suivante du fichier. Tous les threads partagent la même instance, donc différents threads obtiendront des lignes différentes. Lorsque la fin du fichier est atteinte, il reprendra la lecture depuis le début, à moins que le nombre maximal de boucles n'ait été atteint. S'il existe plusieurs références à la fonction dans un script de test, chacune ouvrira le fichier indépendamment, même si les noms de fichiers sont identiques. [Si la valeur doit être réutilisée ailleurs, utilisez des noms de variable différents pour chaque appel de fonction.]

Les instances de fonction sont partagées entre les threads, et le fichier est (ré-)ouvert par n'importe quel thread qui a besoin de la ligne d'entrée suivante, donc l'utilisation de threadNumber dans le nom du fichier entraînera un comportement imprévisible.

Si une erreur se produit lors de l'ouverture ou de la lecture du fichier, alors la fonction renvoie la chaîne " **ERR** "

Paramètres

Attribut
La description
Obligatoire
Nom de fichier
Chemin vers le nom du fichier. (Le chemin peut être relatif au répertoire de lancement de JMeter) Si vous utilisez des numéros de séquence facultatifs, le nom du chemin doit pouvoir être transmis à DecimalFormat. Voir ci-dessous pour des exemples.
Oui
Nom de variable
Un nom de référence - refName - pour réutiliser la valeur créée par cette fonction. Les valeurs stockées sont de la forme ${refName} . La valeur par défaut est " StringFromFile_ ".
Non
Numéro de séquence de démarrage
Numéro de séquence initial (s'il est omis, le numéro de séquence de fin est traité comme un nombre de boucles)
Non
Numéro de séquence de fin
Numéro de séquence final (si omis, les numéros de séquence peuvent augmenter sans limite)
Non

Le paramètre de nom de fichier est résolu lorsque le fichier est ouvert ou rouvert.

Le paramètre de nom de référence (s'il est fourni) est résolu à chaque exécution de la fonction.

Utilisation des numéros de séquence :

Lors de l'utilisation des numéros de séquence facultatifs, le nom du chemin est utilisé comme chaîne de format pour java.text.DecimalFormat . Le numéro de séquence actuel est transmis comme seul paramètre. Si le numéro de début facultatif n'est pas spécifié, le nom du chemin est utilisé tel quel. Les séquences de formatage utiles sont :

#
insérez le numéro, sans zéro ni espace en tête
000
insérer le nombre emballé à trois chiffres avec des zéros en tête si nécessaire
Utilisation des chaînes de format
Voici quelques chaînes de format et les séquences correspondantes qu'elles généreront.
pin#'.'dat
Génèrera les chiffres sans zéros non significatifs et traitera le point littéralement comme
pin1.dat , …, pin9.dat , pin10.dat , …, pin9999.dat
pin000'.'dat
Générera des zéros non significatifs tout en gardant le point. Lorsque les nombres commencent à avoir plus de chiffres que les trois chiffres suggérés par ce format, la séquence utilisera plus de chiffres comme on peut le voir dans
pin001.dat , … pin099.dat , …, pin999.dat , …, pin9999.dat
pin'.'dat#
Ajoute des chiffres sans zéros non significatifs tout en gardant le point et génère
pin.dat1 , …, pin.dat9 , …, pin.dat999

Si plus de chiffres sont nécessaires qu'il n'y a de caractères de formatage, le nombre sera développé si nécessaire.
Pour empêcher l'interprétation d'un caractère de formatage, placez-le entre guillemets simples. Notez que " . " est un caractère de mise en forme et doit être entouré de guillemets simples (bien que #. et 000. fonctionnent comme prévu dans les paramètres régionaux où le point décimal est également " . ")
Dans d'autres paramètres régionaux (par exemple fr ), le point décimal est " , " - ce qui signifie que " #. " devient " nnn, ".
Voir la documentation de DecimalFormat pour plus de détails.
Si le nom du chemin ne contient aucun caractère de formatage spécial, le numéro de séquence actuel sera ajouté au nom, sinon le numéro sera inséré conformément aux instructions de formatage.
Si le numéro de séquence de début est omis et que le numéro de séquence de fin est spécifié, le numéro de séquence est interprété comme un nombre de boucles et le fichier sera utilisé au plus " fin " fois. Dans ce cas, le nom du fichier n'est pas formaté.
${__StringFromFile(PIN#'.'DAT,,1,2)} - lit PIN1.DAT , PIN2.DAT
${__StringFromFile(PIN.DAT,,,2)} - lit PIN.DAT deux fois
Notez que le " . " dans PIN.DAT ci-dessus devraitne pas être cité. Dans ce cas, le numéro de début est omis, de sorte que le nom du fichier est utilisé exactement tel quel.

^

__machineName

La fonction machineName renvoie le nom d'hôte local. Ceci utilise la méthode Java InetAddress.getLocalHost() et la transmet à getHostName()

Paramètres

Attribut
La description
Obligatoire
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non

Exemples:

${__machineName()}
renverra le nom d'hôte de la machine
${__machineName}
renverra le nom d'hôte de la machine

^

__machineIP

La fonction machineIP renvoie l'adresse IP locale. Ceci utilise la méthode Java InetAddress.getLocalHost() et la transmet à getHostAddress()

Paramètres

Attribut
La description
Obligatoire
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non

Exemples:

${__machineIP()}
renverra l'adresse IP de la machine
${__machineIP}
renverra l'adresse IP de la machine

^

__javaScript

La fonction javaScript exécute un morceau de code JavaScript (pas Java !) et renvoie sa valeur

La fonction JMeter Javascript appelle un interpréteur JavaScript autonome. Javascript est utilisé comme langage de script, vous pouvez donc faire des calculs, etc.

javaScript n'est pas le meilleur langage de script pour les performances dans JMeter. Si votre plan nécessite un nombre élevé de threads, il est conseillé d'utiliser les fonctions __jexl3 ou __groovy .
Pour Nashorn Engine, veuillez consulter Java Platform, Standard Edition Nashorn User's Guide .
Pour le moteur Rhino, veuillez consulter Présentation de Mozilla Rhino

Les variables suivantes sont mises à la disposition du script :

Rhinoscript permet l'accès aux méthodes statiques via son objet Packages. Voir la documentation sur les scripts Java . Par exemple on peut accéder aux méthodes statiques JMeterContextService ainsi : Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()

JMeter n'est pas un navigateur et n'interprète pas le JavaScript dans les pages téléchargées.

Paramètres

Attribut
La description
Obligatoire
Expression
L'expression JavaScript à exécuter. Par exemple:
  • new Date() - renvoie la date et l'heure actuelles
  • Math.floor(Math.random()*(${maxRandom}+1)) - un nombre aléatoire entre 0 et la variable maxRandom
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) - un nombre aléatoire entre les variables minRandom et maxRandom
  • "${VAR}"=="abcd"
Oui
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non
N'oubliez pas d'inclure les guillemets nécessaires pour les chaînes de texte et les variables JMeter. De plus, si l'expression contient des virgules, assurez-vous de les échapper. Par exemple dans :
${__javaScript('${sp}'.slice(7\,99999))}
la virgule après 7 est échappée.

Exemples:

${__javaScript(nouvelle date())}
reviendra le samedi 09 janvier 2016 à 16:22:15 GMT+0100 (CET)
${__javaScript(nouvelle date(),MYDATE)}
retournera Sam Jan 09 2016 16:22:15 GMT+0100 (CET) et le stockera sous la variable MYDATE
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}
utilisera la variable maxRandom, renverra une valeur aléatoire entre 0 et maxRandom et la stockera dans MYRESULT
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}
utilisera les variables maxRandom et minRandom , renverra une valeur aléatoire entre maxRandom et minRandom et la stockera sous la variable MYRESULT
${__javaScript("${VAR}"=="abcd",MONRESULTAT)}
comparera la valeur de la variable VAR avec abcd , renverra true ou false et stockera le résultat dans MYRESULT

^

__Aléatoire

La fonction random renvoie un nombre aléatoire qui se situe entre les valeurs min et max données.

Paramètres

Attribut
La description
Obligatoire
Valeur minimum
Un numéro
Oui
Valeur maximum
Un plus grand nombre
Oui
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non

Exemples:

${__Aléatoire(0,10)}
renverra un nombre aléatoire entre 0 et 10
${__Random(0,10, MAVAR)}
renverra un nombre aléatoire entre 0 et 10 et le stockera dans MYVAR . ${MYVAR} contiendra le nombre aléatoire

^

__RandomDate

La fonction RandomDate renvoie une date aléatoire comprise entre les valeurs de date de début et de date de fin données.

Paramètres

Attribut
La description
Obligatoire
Format de l'heure
Chaîne de format pour DateTimeFormatter (par défaut yyyy-MM-dd )
Non
Date de début
La date de début, la valeur par défaut est maintenant
Non
Date de fin
La date de fin
Oui
Paramètres régionaux à utiliser pour le format
Le format de chaîne d'un paramètre régional. Le code de langue doit être en minuscule. Le code pays doit être en majuscule. Le séparateur doit être un trait de soulignement, par exemple en_EN . Voir http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html . Si omis, la fonction utilise par défaut la locale d'Apache JMeter.
Non
Nom de variable
Nom de la variable à définir.
Non

Exemples:

${__RandomDate(,,2050-07-08,,)}
renverra une date aléatoire entre maintenant et le 2050-07-08 . Par exemple 2039-06-21
${__RandomDate(jj MM aaaa,,08 07 2050,,)}
renverra une date aléatoire avec un format personnalisé comme 04 03 2034

^

__RandomString

La fonction RandomString renvoie une chaîne aléatoire de longueur en utilisant les caractères dans les caractères à utiliser.

Paramètres

Attribut
La description
Obligatoire
Longueur
Une longueur numérique de la chaîne générée
Oui
Caractères à utiliser
Caractères utilisés pour générer String
Non
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non

Exemples:

${__Chaîne aléatoire(5)}
renverra une chaîne aléatoire de 5 caractères qui peut être lisible ou non
${__RandomString(10,abcdefg)}
renverra une chaîne aléatoire de 10 caractères choisis dans l'ensemble abcdefg , comme cdbgdbeebd ou adbfeggfad , …
${__RandomString(6,a12zeczclk, MYVAR)}
renverra une chaîne aléatoire de 6 caractères choisis dans un jeu a12zeczclk et stockera le résultat dans MYVAR , MYVAR contiendra une chaîne comme 2z22ak ou z11kce , …

^

__RandomFromMultipleVars

La fonction RandomFromMultipleVars renvoie une valeur aléatoire basée sur les valeurs de variables fournies par Source Variables .

Les variables peuvent être simples ou multi-valuées car elles peuvent être générées par les extracteurs suivants : Les variables à valeurs multiples sont celles qui sont extraites lorsque vous définissez -1 pour Match Numbers . Cela conduit à la création d'une variable de numéro de correspondance appelée varName_matchNr et pour chaque valeur à la création de la variable varName_n où n = 1, 2, 3 etc.

Paramètres

Attribut
La description
Obligatoire
Variables sources
Noms de variables séparés par | qui contiennent les valeurs qui seront utilisées comme entrée pour le calcul aléatoire
Oui
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non

Exemples:

${__RandomFromMultipleVars(val)}
renverra une chaîne aléatoire basée sur le contenu de la variable val en tenant compte du fait qu'ils sont multi-valeurs ou non
${__RandomFromMultipleVars(val1|val2)}
renverra une chaîne aléatoire basée sur le contenu des variables val1 et val2 en tenant compte du fait qu'elles sont multi-valeurs ou non
${__RandomFromMultipleVars(val1|val2, MYVAR)}
renverra une chaîne aléatoire basée sur le contenu des variables val1 et val2 en tenant compte du fait qu'elles sont multi-valeurs ou non et stockera le résultat dans MYVAR

^

__UUID

La fonction UUID renvoie un identifiant universel pseudo-aléatoire de type 4 (UUID).

Paramètres

Attribut
La description
Obligatoire

Exemples:

${__UUID()}
renverra les UUID avec ce format : c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd

^

__CSVLire

La fonction CSVRead renvoie une chaîne depuis un fichier CSV (cf StringFromFile )

REMARQUE : JMeter prend en charge plusieurs noms de fichiers.

Dans la plupart des cas, le nouvel élément CSV Data Set Config est plus facile à utiliser.

Lorsqu'un nom de fichier est rencontré pour la première fois, le fichier est ouvert et lu dans un tableau interne. Si une ligne vide est détectée, elle est traitée comme une fin de fichier - cela permet d'utiliser des commentaires de fin.

Toutes les références ultérieures au même nom de fichier utilisent le même tableau interne. NB la casse du nom de fichier est importante pour la fonction, même si le système d'exploitation ne s'en soucie pas, donc CSVRead(abc.txt,0) et CSVRead(aBc.txt,0) feraient référence à des tableaux internes différents.

La fonction *ALIAS permet d'ouvrir plusieurs fois le même fichier et permet également des noms de fichiers plus courts.

Chaque thread a son propre pointeur interne vers sa ligne actuelle dans le tableau de fichiers. Lorsqu'un thread se réfère pour la première fois au fichier, il se verra attribuer la ligne libre suivante dans le tableau, de sorte que chaque thread accédera à une ligne différente de tous les autres threads. [Sauf s'il y a plus de threads qu'il n'y a de lignes dans le tableau.]

La fonction divise la ligne à chaque virgule par défaut. Si vous souhaitez saisir des colonnes contenant des virgules, vous devrez remplacer le délimiteur par un caractère qui n'apparaît dans aucune donnée de colonne, en définissant la propriété : csvread.delimiter

Paramètres

Attribut
La description
Obligatoire
Nom de fichier
Le fichier (ou *ALIAS ) à lire
Oui
Numéro de colonne
Le numéro de colonne dans le fichier. 0 = première colonne, 1 = deuxième etc. " suivant " - passe à la ligne suivante du fichier. *ALIAS - ouvrez un fichier et attribuez-le à l'alias
Oui

Par exemple, vous pouvez configurer certaines variables comme suit :

  • 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)}
Cela lirait deux colonnes à partir d'une ligne et deux colonnes à partir de la prochaine ligne disponible. Si toutes les variables sont définies sur le même préprocesseur de paramètres utilisateur, alors les lignes seront consécutives. Sinon, un thread différent peut saisir la ligne suivante.

La fonction n'est pas adaptée à une utilisation avec des fichiers volumineux, car le fichier entier est stocké en mémoire. Pour les fichiers plus volumineux, utilisez l'élément CSV Data Set Config ou StringFromFile .
^

__propriété

La fonction de propriété renvoie la valeur d'une propriété JMeter. Si la valeur de la propriété est introuvable et qu'aucune valeur par défaut n'a été fournie, elle renvoie le nom de la propriété. Lors de la fourniture d'une valeur par défaut, il n'est pas nécessaire de fournir un nom de fonction - le paramètre peut être défini sur null et il sera ignoré.

Par exemple:

  • ${__property(user.dir)} - valeur de retour de user.dir
  • ${__property(user.dir,UDIR)} - renvoie la valeur de user.dir et enregistre dans UDIR
  • ${__property(abcd,ABCD,atod)} - renvoie la valeur de la propriété abcd (ou " atod " si elle n'est pas définie) et l'enregistre dans ABCD
  • ${__property(abcd,,atod)} - renvoie la valeur de la propriété abcd (ou " atod " si elle n'est pas définie) mais ne l'enregistre pas

Paramètres

Attribut
La description
Obligatoire
Nom de la propriété
Le nom de la propriété à récupérer.
Oui
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non
Valeur par défaut
La valeur par défaut de la propriété.
Non
^

__P

Il s'agit d'une fonction de propriété simplifiée destinée à être utilisée avec des propriétés définies sur la ligne de commande. Contrairement à la fonction __property , il n'y a pas d'option pour enregistrer la valeur dans une variable, et si aucune valeur par défaut n'est fournie, elle est supposée être 1. La valeur 1 a été choisie car elle est valide pour les variables de test courantes telles que les boucles, nombre de threads, montée en puissance, etc.

Par exemple:

Définissez la valeur de la propriété :

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu
Récupérer les valeurs :
${__P(group1.threads)} - renvoie la valeur de group1.threads
${__P(group1.loops)} - renvoie la valeur de group1.loops
${__P(hostname,www.dummy.org) } - renvoie la valeur de la propriété hostname ou www.dummy.org si elle n'est pas définie autre part!)

Paramètres

Attribut
La description
Obligatoire
Nom de la propriété
Le nom de la propriété à récupérer.
Oui
Valeur par défaut
La valeur par défaut de la propriété. S'il est omis, la valeur par défaut est " 1 ".
Non
^

__log

La fonction log enregistre un message et renvoie sa chaîne d'entrée

Paramètres

Attribut
La description
Obligatoire
Chaîne à enregistrer
Un string
Oui
Niveau de journalisation
OUT , ERR , DEBUG , INFO (par défaut), WARN ou ERROR
Non
Texte jetable
S'il n'est pas vide, crée un Throwable à transmettre à l'enregistreur
Non
Commentaire
S'il est présent, il est affiché dans la chaîne. Utile pour identifier ce qui est enregistré.
Non

Les noms de niveau de journalisation OUT et ERR sont utilisés pour diriger la sortie vers System.out et System.err respectivement. Dans ce cas, la sortie est toujours imprimée - elle ne dépend pas du paramètre de journal actuel.

${__log(Message)}
écrit dans le fichier journal sous la forme " … Nom du fil : Message "
${__log(Message,OUT)}
écrit dans la fenêtre de la console
${__log(${VAR},,,VAR=)}
écrit dans le fichier journal sous la forme " … nom du thread VAR=valeur "
^

__logn

La fonction logn enregistre un message et renvoie la chaîne vide

Paramètres

Attribut
La description
Obligatoire
Chaîne à enregistrer
Un string
Oui
Niveau de journalisation
OUT , ERR , DEBUG , INFO (par défaut), WARN ou ERROR
Non
Texte jetable
S'il n'est pas vide, crée un Throwable à transmettre à l'enregistreur
Non

Les noms de niveau de journalisation OUT et ERR sont utilisés pour diriger la sortie vers System.out et System.err respectivement. Dans ce cas, la sortie est toujours imprimée - elle ne dépend pas du paramètre de journal actuel.

${__logn(VAR1=${VAR1},OUT)}
écrire la valeur de la variable dans la fenêtre de la console
^

__BeanShell

La fonction BeanShell évalue le script qui lui est transmis et renvoie le résultat.

Pour les performances, il est préférable d'utiliser la fonction __groovy

Pour plus de détails sur l'utilisation de BeanShell, veuillez consulter le site Web de BeanShell à l' adresse http://www.beanshell.org/

Notez qu'un interpréteur différent est utilisé pour chaque occurrence indépendante de la fonction dans un script de test, mais le même interpréteur est utilisé pour les invocations suivantes. Cela signifie que les variables persistent à travers les appels à la fonction.

Une seule instance d'une fonction peut être appelée à partir de plusieurs threads. Cependant la méthode execute() de la fonction est synchronisée.

Si la propriété " beanshell.function.init " est définie, elle est transmise à l'interpréteur en tant que nom d'un fichier sourcé. Cela peut être utilisé pour définir des méthodes et des variables communes. Il existe un exemple de fichier init dans le répertoire bin : BeanShellFunction.bshrc .

Les variables suivantes sont définies avant l'exécution du script :

(*) signifie que ceci est défini avant que le fichier init, le cas échéant, ne soit traité. D'autres variables varient d'une invocation à l'autre.

Paramètres

Attribut
La description
Obligatoire
Script BeanShell
Un script beanshell (pas un nom de fichier)
Oui
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non

Exemple:

${__BeanShell(123*456)}
renvoie 56088
${__BeanShell(source("fonction.bsh"))}
traite le script dans function.bsh

N'oubliez pas d'inclure les guillemets nécessaires pour les chaînes de texte et les variables JMeter qui représentent des chaînes de texte.
^

__groovy

La fonction __groovy évalue les scripts Apache Groovy qui lui sont transmis et renvoie le résultat.

Si la propriété « groovy.utilities » est définie, elle sera chargée par le ScriptEngine. Cela peut être utilisé pour définir des méthodes et des variables communes. Il existe un exemple de fichier init dans le répertoire bin : utility.groovy .

Les variables suivantes sont définies avant l'exécution du script :

(*) signifie que ceci est défini avant que le fichier init, le cas échéant, ne soit traité. D'autres variables varient d'une invocation à l'autre.

Lorsque vous utilisez cette fonction, veuillez utiliser les variables définies ci-dessus plutôt que d'utiliser le remplacement de chaîne pour accéder à une variable dans votre script. Suivre ce modèle garantira que vos tests sont performants en garantissant que le Groovy peut être mis en cache.

Par exemple , ne procédez pas comme suit :

${__groovy("${maVar}".substring(0\,2))}

Imaginez que la variable myVar change à chaque transaction, le Groovy ci-dessus ne peut pas être mis en cache car le script change à chaque fois.

À la place, procédez comme suit, qui peut être mis en cache :

${__groovy(vars.get("myVar").substring(0\,2))}

Paramètres

Attribut
La description
Obligatoire
Expression à évaluer
Un script Apache Groovy (pas un nom de fichier)
Les valeurs d'argument qui contiennent elles-mêmes des virgules doivent être échappées si nécessaire. Si vous devez inclure une virgule dans la valeur de votre paramètre, échappez-la comme ceci : ' \, '
Oui
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Non

Exemple:

${__groovy(123*456)}
renvoie 56088
${__groovy(vars.get("myVar").substring(0\,2))}
Si la valeur de var est JMeter , elle renverra JM lors de l'exécution de String.substring(0,2) . Notez que , a été échappé à \,

N'oubliez pas d'inclure les guillemets nécessaires pour les chaînes de texte et les variables JMeter qui représentent des chaînes de texte.
^

__split

La fonction split divise la chaîne qui lui est transmise en fonction du délimiteur et renvoie la chaîne d'origine. Si des délimiteurs sont adjacents, " ? " est renvoyé comme valeur. Les chaînes fractionnées sont renvoyées dans les variables ${VAR_1} , ${VAR_2} etc. Le nombre de variables est renvoyé dans ${VAR_n} . Un délimiteur de fin est traité comme une variable manquante et " ? " est renvoyé. De plus, pour lui permettre de mieux fonctionner avec le contrôleur ForEach, __split supprime désormais la première variable inutilisée au cas où elle aurait été définie par un fractionnement précédent.

Exemple :
Définissez VAR =" a||c| " dans le plan de test.
${__split(${VAR},VAR,|)}

Cela renverra le contenu de VAR , c'est-à-dire " a||c| " et définira les variables suivantes :
VAR_n = 4
VAR_1 = a
VAR_2 = ?
VAR_3 = c
VAR_4 = ?
VAR_5 = nul

Paramètres

Attribut
La description
Obligatoire
Chaîne à diviser
Une chaîne délimitée, par exemple " a|b|c "
Oui
Nom de variable
Un nom de référence pour réutiliser la valeur calculée par cette fonction.
Oui
Délimiteur
Le caractère délimiteur, par exemple | . S'il est omis, , est utilisé. Notez que , devrait être spécifié comme \, .
Non
^

__XPath

La fonction XPath lit un fichier XML et correspond à XPath. Chaque fois que la fonction est appelée, la prochaine correspondance sera renvoyée. À la fin du fichier, il reviendra au début. Si aucun nœud ne correspond, la fonction renverra la chaîne vide et un message d'avertissement sera écrit dans le fichier journal JMeter.

Notez que la NodeList entière est conservée en mémoire.

Exemple:
${__XPath(/chemin/vers/build.xml, //cible/@nom)}
Cela correspondra à toutes les cibles dans build.xml et renverra le contenu de l'attribut de nom suivant

Paramètres

Attribut
La description
Obligatoire
Fichier XML à analyser
un fichier XML à parser
Oui
XPath
une expression XPath pour faire correspondre les nœuds dans le fichier XML
Oui
^

__setProperty

La fonction setProperty définit la valeur d'une propriété JMeter. La valeur de retour par défaut de la fonction est la chaîne vide, de sorte que l'appel de fonction peut être utilisé partout où les fonctions sont valides.

La valeur d'origine peut être renvoyée en réglant le 3ème paramètre facultatif sur " true ".

Les propriétés sont globales à JMeter, elles peuvent donc être utilisées pour communiquer entre les threads et les groupes de threads

Paramètres

Attribut
La description
Obligatoire
Nom de la propriété
Le nom de la propriété à définir.
Oui
Valeur de la propriété
La valeur de la propriété.
Oui
Vrai faux
La valeur d'origine doit-elle être renvoyée ?
Non
^

__heure

La fonction time renvoie l'heure actuelle dans différents formats.

Paramètres

Attribut
La description
Obligatoire
Format
Format à transmettre à SimpleDateFormat . La fonction prend en charge divers alias abrégés, voir ci-dessous. Si omis, la fonction renvoie l'heure actuelle en millisecondes depuis l'époque.
Non
Nom de variable
Nom de la variable à définir.
Non

Si la chaîne de format est omise, la fonction renvoie l'heure actuelle en millisecondes depuis l'époque. Si le format correspond à " /ddd " (où ddd sont des chiffres décimaux), la fonction renvoie l'heure actuelle en millisecondes divisée par la valeur de ddd . Par exemple, " /1000 " renvoie l'heure actuelle en secondes depuis l'époque. Sinon, l'heure actuelle est passée à SimpleDateFormat. Les alias abrégés suivants sont fournis :

  • AMJ = aaaaMMjj
  • HMS = HHmmss
  • YMDHMS = aaaaMMjj-HHmmss
  • USER1 = tout ce qui se trouve dans la propriété JMeter time.USER1
  • USER2 = tout ce qui se trouve dans la propriété JMeter time.USER2

Les valeurs par défaut peuvent être modifiées en définissant la propriété JMeter appropriée, par exemple time.YMD=yyMMdd

${__heure(jj/MM/aaaa,)}
reviendra le 21/01/2018 si exécuté le 21 janvier 2018

${__time(YMD,)}
renverra 20180121 si exécuté le 21 janvier 2018

${__time()}
renverra le temps en millis 1516540541624

^

__jexl2

La fonction jexl renvoie le résultat de l'évaluation d'une expression Commons JEXL . Voir les liens ci-dessous pour plus d'informations sur les expressions JEXL.

La fonction __jexl2 utilise Commons JEXL 2

Paramètres

Attribut
La description
Obligatoire
Expression
Expression à évaluer. Par exemple, 6*(5+2)
Oui
Nom de variable
Nom de la variable à définir.
Non

Les variables suivantes sont mises à la disposition du script :

  • log - le Logger pour la fonction
  • ctx - Objet JMeterContext
  • vars - objet JMeterVariables
  • accessoires - objet JMeterProperties (classe java.util.Properties )
  • threadName - Chaîne contenant le nom du thread actuel
  • sampler - objet Sampler actuel (le cas échéant)
  • sampleResult - objet SampleResult précédent (le cas échéant)
  • OUT - System.out - par exemple OUT.println("message")

Jexl peut aussi créer des classes et y appeler des méthodes, par exemple :

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Notez que la documentation Jexl sur le site Web suggère à tort que " div " effectue une division entière. En fait, " div " et " / " effectuent tous deux une division normale. On peut obtenir le même effet comme suit :
je= 5 / 2 ;
i.intValue(); // ou utilisez i.longValue()

JMeter permet à l'expression de contenir plusieurs instructions.
^

__jexl3

La fonction jexl renvoie le résultat de l'évaluation d'une expression Commons JEXL . Voir les liens ci-dessous pour plus d'informations sur les expressions JEXL.

La fonction __jexl3 utilise Commons JEXL 3

Paramètres

Attribut
La description
Obligatoire
Expression
Expression à évaluer. Par exemple, 6*(5+2)
Oui
Nom de variable
Nom de la variable à définir.
Non

Les variables suivantes sont mises à la disposition du script :

  • log - le Logger pour la fonction
  • ctx - Objet JMeterContext
  • vars - objet JMeterVariables
  • accessoires - objet JMeterProperties (classe java.util.Properties )
  • threadName - Chaîne contenant le nom du thread actuel
  • sampler - objet Sampler actuel (le cas échéant)
  • sampleResult - objet SampleResult précédent (le cas échéant)
  • OUT - System.out - par exemple OUT.println("message")

Jexl peut aussi créer des classes et y appeler des méthodes, par exemple :

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Notez que la documentation Jexl sur le site Web suggère à tort que " div " effectue une division entière. En fait, " div " et " / " effectuent tous deux une division normale. On peut obtenir le même effet comme suit :
je= 5 / 2 ;
i.intValue(); // ou utilisez i.longValue()

JMeter permet à l'expression de contenir plusieurs instructions.
^

__V

La fonction V (variable) renvoie le résultat de l'évaluation d'une expression de nom de variable. Cela peut être utilisé pour évaluer les références de variables imbriquées (qui ne sont actuellement pas prises en charge).

Par exemple, si l'on a les variables A1 , A2 et N = 1 :

  • ${A1} - fonctionne bien
  • ${A${N}} - ne fonctionne pas (référence de variable imbriquée)
  • ${__V(A${N})} - fonctionne bien. A${N} devient A1 , et la fonction __V renvoie la valeur de A1

Paramètres

Attribut
La description
Obligatoire
Nom de variable
La variable à évaluer.
Oui
Valeur par défaut
La valeur par défaut dans le cas où aucune variable n'a été trouvée, si elle est vide et qu'aucune variable n'a été trouvée, la fonction renvoie le nom de la variable
Non
^

__evalVar

La fonction evalVar renvoie le résultat de l'évaluation d'une expression stockée dans une variable.

Cela permet de lire une chaîne à partir d'un fichier et de traiter toutes les références de variables qu'il contient. Par exemple, si la variable " requête " contient " select ${column} from ${table} " et " colonne " et " table " contiennent " nom " et " clients ", alors ${__evalVar(query)} sera évalué comme " sélectionner le nom des clients ".

Paramètres

Attribut
La description
Obligatoire
Nom de variable
La variable à évaluer.
Oui
^

__eval

La fonction eval renvoie le résultat de l'évaluation d'une expression de chaîne.

Cela permet d'interpoler les références de variable et de fonction dans une chaîne qui est stockée dans une variable. Par exemple, étant donné les variables suivantes :

  • nom = Smith
  • colonne = âge
  • table = anniversaires
  • SQL = sélectionnez ${column} à partir de ${table} où name='${name}'
alors ${__eval(${SQL})} sera évalué comme " select age from birthdays where name='Smith' ".

Cela peut être utilisé en conjonction avec CSV Dataset, par exemple où les instructions SQL et les valeurs sont définies dans le fichier de données.

Paramètres

Attribut
La description
Obligatoire
Nom de variable
La variable à évaluer.
Oui
^

__char

La fonction char renvoie le résultat de l'évaluation d'une liste de nombres sous forme de caractères Unicode. Voir aussi __unescape() , ci-dessous.

Cela permet d'ajouter des valeurs de caractères arbitraires dans les champs.

Paramètres

Attribut
La description
Obligatoire
Numéro de caractère Unicode (décimal ou 0xhex)
Le nombre décimal (ou nombre hexadécimal, s'il est préfixé par 0x , ou octal, s'il est préfixé par 0 ) à convertir en caractère Unicode.
Oui

Exemples :
${__char(13,10)} = ${__char(0xD,0xA)} = ${__char(015,012)} = CRLF
${__char(165)} = ¥ (yen)

^

__unescape

La fonction unescape renvoie le résultat de l'évaluation d'une chaîne Java échappée. Voir aussi __char() ci-dessus.

Cela permet d'ajouter des caractères à des champs qui sont autrement délicats (voire impossibles) à définir via l'interface graphique.

Paramètres

Attribut
La description
Obligatoire
Chaîne pour déséchapper
La chaîne à ne pas échapper.
Oui

Exemples :
${__unescape(\r\n)} = CRLF
${__unescape(1\t2)} = 1 [tab] 2

^

__unescapeHtml

Fonction permettant de remplacer une chaîne contenant des échappements d'entités HTML par une chaîne contenant les caractères Unicode réels correspondant aux échappements. Prend en charge les entités HTML 4.0.

Par exemple, la chaîne

${__unescapeHtml(<Français>)}
renverra <English> .

Si une entité n'est pas reconnue, elle est laissée seule et insérée textuellement dans la chaîne de résultat. par exemple ${__unescapeHtml(>&zzzz;x)} renverra >&zzzz;x .

Utilise StringEscapeUtils#unescapeHtml(String) de Commons Lang.

Paramètres

Attribut
La description
Obligatoire
Chaîne pour déséchapper
La chaîne à ne pas échapper.
Oui
^

__escapeHtml

Fonction qui échappe les caractères d'une chaîne à l'aide d'entités HTML. Prend en charge les entités HTML 4.0.

Par exemple,

${__escapeHtml("pain" & "beurre")}
retour : "pain" & "beurre" .

Utilise StringEscapeUtils#escapeHtml(String) de Commons Lang.

Paramètres

Attribut
La description
Obligatoire
Chaîne pour s'échapper
La chaîne à échapper.
Oui
^

__urldecode

Fonction pour décoder une chaîne application/x-www-form-urlencoded . Remarque : utilisez UTF-8 comme schéma de codage.

Par exemple, la chaîne

${__urldecode(Word+%22school%22+is+%22%C3%A9cole%22+in+french)}
renvoie Le mot "school" est "école" en français .

Utilise la classe Java URLDecoder .

Paramètres

Attribut
La description
Obligatoire
Chaîne à décoder
La chaîne avec les caractères encodés en URL à décoder.
Oui
^

__urlencode

Fonction pour encoder une chaîne en une chaîne application/x-www-form-urlencoded .

Par exemple, la chaîne

${__urlencode(Word "school" est "école" en français)}
renvoie Word+%22school%22+is+%22%C3%A9cole%22+in+french .

Utilise la classe Java URLEncoder .

Paramètres

Attribut
La description
Obligatoire
Chaîne à encoder
Chaîne à encoder en caractères encodés URL.
Oui
^

__FichierVersChaîne

La fonction FileToString peut être utilisée pour lire un fichier entier. Chaque fois qu'il est appelé, il lit le fichier entier.

Si une erreur se produit lors de l'ouverture ou de la lecture du fichier, alors la fonction renvoie la chaîne " **ERR** "

Paramètres

Attribut
La description
Obligatoire
Nom de fichier
Chemin vers le nom du fichier. (Le chemin peut être relatif au répertoire de lancement de JMeter)
Oui
Encodage de fichier si ce n'est pas la plate-forme par défaut
L'encodage à utiliser pour lire le fichier. S'il n'est pas spécifié, la plate-forme par défaut est utilisée.
Non
Nom de variable
Un nom de référence - refName - pour réutiliser la valeur créée par cette fonction. Les valeurs stockées sont de la forme ${refName} .
Non

Les paramètres de nom de fichier, d'encodage et de nom de référence sont résolus à chaque exécution de la fonction.

^

__samplerName

La fonction samplerName renvoie le nom (c'est-à-dire l'étiquette) de l'échantillonneur courant.

La fonction ne fonctionne pas dans les éléments Test qui n'ont pas d'échantillonneur associé. Par exemple, le plan de test. Les éléments de configuration n'ont pas non plus d'échantillonneur associé. Cependant, certains éléments de configuration sont référencés directement par les échantillonneurs, tels que le gestionnaire d'en-tête HTTP et le gestionnaire de cookies HTTP, et dans ce cas, les fonctions sont résolues dans le contexte de l'échantillonneur HTTP. Les pré-processeurs, post-processeurs et assertions ont toujours un échantillonneur associé.

Exemple:

${__samplerName()}

Paramètres

Attribut
La description
Obligatoire
Nom de variable
Un nom de référence - refName - pour réutiliser la valeur créée par cette fonction. Les valeurs stockées sont de la forme ${refName} .
Non
^

__TestPlanName

La fonction TestPlanName renvoie le nom du plan de test courant (peut être utilisée dans Inclure des plans pour connaître le nom du plan de test appelant).

Exemple:

${__TestPlanName}
renverra le nom de fichier de votre plan de test, par exemple si le plan est dans un fichier nommé Demo.jmx, il renverra " Demo.jmx

^

__escapeOroRegexpChars

Fonction qui échappe aux métacaractères ORO Regexp, c'est l'équivalent de \Q \E dans Java Regexp Engine.

Par exemple,

${__escapeOroRegexpChars([^"].+?,)}
renvoie : \[\^\"\]\.\+\? .

Utilise Perl5Compiler#quotemeta(String) d'ORO.

Paramètres

Attribut
La description
Obligatoire
Chaîne pour s'échapper
La chaîne à échapper.
Oui
Nom de variable
Un nom de référence - refName - pour réutiliser la valeur créée par cette fonction. Les valeurs stockées sont de la forme ${refName} .
Non
^

__escapeXml

Fonction qui échappe les caractères d'une chaîne à l'aide d'entités XML 1.0.

Par exemple,

${__escapeXml("pain" & 'beurre')}
renvoie : "pain" & 'beurre' .

Utilise StringEscapeUtils#escapeXml10(String) de Commons Lang.

Paramètres

Attribut
La description
Obligatoire
Chaîne pour s'échapper
La chaîne à échapper.
Oui
^

__timeShift

La fonction timeShift renvoie une date dans le format donné avec le nombre spécifié de secondes, minutes, heures, jours ou mois ajoutés

Paramètres

Attribut
La description
Obligatoire
Format
Format à transmettre à DateTimeFormatter. Voir DateTimeFormatter Si omis, la fonction utilise les millisecondes depuis le format d'époque.
Non
Date à décaler
Indiquez la date dans le format fixé par le paramètre 'Format' à décaler Si omis, la date est mise à maintenant
Non
valeur à déplacer
Indiquez le nombre spécifié de secondes, de minutes, d'heures ou de jours à décaler selon une représentation textuelle d'une durée telle que PnDTnHnMn.nS. Voir https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
  • PT20.345S analyse en 20,345 secondes
  • PT15M analyse en 15 minutes
  • PT10H analyse comme 10 heures
  • P2D analyse en 2 jours
  • -P6H3M analyse comme -6 heures et -3 minutes
Non
Paramètres régionaux à utiliser pour le format
Le format de chaîne d'un paramètre régional. Le code de langue doit être en minuscule. Le code pays doit être en majuscule. Le séparateur doit être un trait de soulignement. ex: en_EN Voir http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html Si omis, par défaut la fonction utilise la locale ApacheJMeter.
Non
Nom de variable
Nom de la variable à définir.
Non

Exemples:

${__timeShift(jj/MM/aaaa,21/01/2018,P2D,,)}
retour 23/01/2018
${__timeShift(jj MMMM aaaa,21 février 2018,P2D,fr_FR,)}
retours 23 février 2018

^

__digérer

La fonction digest renvoie une valeur cryptée dans l'algorithme de hachage spécifique avec le sel facultatif, les majuscules et le nom de la variable.

Paramètres

Attribut
La description
Obligatoire
Algorithme
L'algorithme à utiliser pour chiffrer Pour les algorithmes possibles Voir MessageDigest dans StandardNames
  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
Les espaces sont pris en compte pour Salt à ajouter et String à encoder
Oui
Chaîne à encoder
La chaîne qui sera chiffrée
Oui
Sel à ajouter
Sel à ajouter à la ficelle (après)
Non
Valeur majuscule
Le résultat sera en minuscules par défaut. Choisissez vrai pour les résultats en majuscules.
Non
Nom de variable
Nom de la variable à définir.
Non

Exemples:

${__digest(MD5,Errare humanum est,,,)}
renvoie c49f00b92667a35c63708933384papa52
${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}
renvoie a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7

^

__dateTimeConvert

La fonction __dateTimeConvert convertit une date au format source en un format cible stockant éventuellement le résultat dans le nom de la variable.

Paramètres

Attribut
La description
Obligatoire
Chaîne de date
Chaîne de date à convertir du format de date source au format de date cible. Une date comme heure d'époque pourrait être utilisée ici si le format de date source est vide.
Oui
Format de date d'origine
Le format de date d'origine. S'il est vide, le champ Chaîne de date doit être une heure d'époque.
Non
Format de date cible
Le nouveau format de date
Oui
Nom de variable
Nom de la variable à définir.
Non

Exemple:

${__dateTimeConvert(01212018,MMjjaaa,jj/MM/aaaa,)}
retour 21/01/2018

Avec la valeur de temps d'époque : 1526574881000,

${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}
renvoie 17/05/2018 16:34 en heure UTC (-Duser.timezone=GMT)

^

__isPropDefined

La fonction __isPropDefined renvoie true si la propriété existe ou false sinon.

Paramètres

Attribut
La description
Obligatoire
Nom de la propriété
Le nom de la propriété à utiliser pour vérifier s'il est défini
Oui

Exemple:

${__isPropDefined(START.HMS)}
reviendra vrai

^

__isVarDefined

La fonction __isVarDefined renvoie true si la variable existe ou false sinon.

Paramètres

Attribut
La description
Obligatoire
Nom de variable
Le nom de la variable à utiliser pour vérifier si défini
Oui

Exemple:

${__isVarDefined(JMeterThread.last_sample_ok)}
reviendra vrai

^

__changeCase

La fonction de changement de casse renvoie une valeur de chaîne dont la casse a été modifiée selon un mode spécifique. Le résultat peut éventuellement être enregistré dans une variable JMeter.

Paramètres

Attribut
La description
Obligatoire
Chaîne pour changer la casse
La chaîne dont la casse sera modifiée
Oui
changer le mode de casse
Le mode à utiliser pour changer de casse, par exemple pour ab-CD eF :
  • UPPER résultat comme AB-CD EF
  • Résultat INFÉRIEUR comme ab-cd ed
  • MAJUSCULES résultat comme Ab-CD eF
le mode de changement de casse est insensible à la casse
Oui
Nom de variable
Nom de la variable à définir.
Non

Exemples:

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
reviendra AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL
${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}
reviendra du travail omnia vincit improbus
${__changeCase(omnibus viis romam pervenitur,CAPITALISE,)}
reviendra Omnibus viis romam pervenitur

^

__ChaîneVersFichier

La fonction __StringToFile peut être utilisée pour écrire une chaîne dans un fichier. Chaque fois qu'il est appelé, il écrit une chaîne dans le fichier en l'ajoutant ou en l'écrasant.

La valeur de retour par défaut de la fonction est la chaîne vide

Paramètres

Attribut
La description
Obligatoire
Chemin d'accès au fichier
Chemin vers le nom du fichier.(Le chemin est absolu)
Oui
Chaîne à écrire
La chaîne à écrire dans le fichier.
Si vous devez insérer un saut de ligne dans votre contenu, utilisez \n dans votre chaîne.
Oui
Ajouter au fichier ?
La façon d'écrire la chaîne, vrai signifie ajouter, faux signifie écraser. S'il n'est pas spécifié, l'ajout par défaut est true .
Non
Encodage de fichier si pas UTF-8
L'encodage à utiliser pour écrire dans le fichier. S'il n'est pas spécifié, l'encodage par défaut est UTF-8 .
Non
^

20.6 Variables prédéfinies

La plupart des variables sont définies en appelant des fonctions ou par des éléments de test tels que les variables définies par l'utilisateur ; auquel cas l'utilisateur a un contrôle total sur le nom de variable utilisé. Cependant certaines variables sont définies en interne par JMeter. Ceux-ci sont énumérés ci-dessous.

  • COOKIE_cookiename - contient la valeur du cookie (voir HTTP Cookie Manager )
  • JMeterThread.last_sample_ok - si oui ou non le dernier échantillon était OK - true / false . Remarque : ceci est mis à jour après l'exécution des PostProcessors et des Assertions.
  • Variables START (voir section suivante)

20.6 Propriétés prédéfinies

L'ensemble des propriétés JMeter est initialisé à partir des propriétés système définies au démarrage de JMeter ; des propriétés JMeter supplémentaires sont définies dans jmeter.properties , user.properties ou sur la ligne de commande.

Certaines propriétés intégrées sont définies par JMeter. Ceux-ci sont énumérés ci-dessous. Pour plus de commodité, les propriétés START sont également copiées dans des variables portant le même nom.

  • START.MS - Heure de démarrage de JMeter en millisecondes
  • START.YMD - Heure de début de JMeter au format aaaaMMjj
  • START.HMS - Heure de début de JMeter en tant que HHmmss
  • TESTSTART.MS - heure de début du test en millisecondes

Veuillez noter que les variables/propriétés START représentent l'heure de démarrage de JMeter, et non l'heure de début du test. Ils sont principalement destinés à être utilisés dans les noms de fichiers, etc.

Go to top