web-dev-qa-db-fra.com

JMeter "si contrôleur" avec paramètres?

Je lisais la documentation JMeter et suis tombé sur cette boîte d'informations sur "If Controllers":

Aucune variable n'est mise à la disposition du script lorsque la condition est interprétée comme Javascript. Si vous avez besoin d'accéder à ces variables, sélectionnez "Interpréter la condition comme une expression variable?" et utilisez un appel de fonction __javaScript (). Vous pouvez ensuite utiliser les objets "vars", "log", "ctx" etc. dans le script.

Je ne suis pas tout à fait d'accord. Est-ce à dire que si je veux accéder à un "paramètre défini par l'utilisateur", je ne peux y accéder qu'en écrivant du JavaScript? L'exemple qui suit cette case fait ensuite référence à "$ {COUNT}"

Quelqu'un pourrait-il clarifier l'utilisation du contrôleur If, peut-être avec un exemple ou deux?

25
Ben Flynn

Vous pouvez simplement utiliser quelque chose comme

${my_variable}=='1'

Parfois, la documentation JMeter peut être source de confusion :)

Edit 27 septembre 2017:

La réponse fonctionne ici mais a un très mauvais impact sur les performances lorsque le nombre de threads dépasse 40.

Voir ci-dessous pour la réponse correcte et la plus performante:

Voir:

20
Gerrie Schenck

Toutes ces réponses sont fausses! Vous devez mettre la référence de variable entre guillemets, comme ceci:

"${my_variable}"=="foo"
33
jameshfisher

Que Dieu bénisse le http://habrahabr.r Ont essayé jusqu'à ce que trouvé ces derniers. enter image description here

Utiliser les guillemets était ma solution.

8
user1355677

Décochez la case "Interpréter la condition comme expression de variable"

J'ai perdu quelques heures sans décocher cette case. Cela a fonctionné avec et sans point-virgule (;) à la fin de l'instruction. Assurez-vous d'avoir défini les variables définies par l'utilisateur avant d'appeler le contrôleur if.

Toutes les variantes suivantes ont fonctionné pour moi dans Jakarta Jmeter 1.5

  • $ {__ javaScript ("$ {HOMEPAGE}" == "Y")}
  • $ {__ javaScript ("$ {HOMEPAGE}" == "Y")};
  • "$ {HOMEPAGE}" == "Y"
  • "$ {HOMEPAGE}" == "Y";
8
blogme4u

Si le contrôleur utilise en interne javascript pour évaluer la condition, mais cela peut entraîner une baisse des performances.

Une meilleure option (par défaut à partir de JMeter 4, voir https://bz.Apache.org/bugzilla/show_bug.cgi?id=61675 ) consiste à vérifier " Interpréter la condition comme une expression variable? ", alors dans le champ de condition vous avez 2 options:

  • Option 1: utilisez une variable qui contient vrai ou faux. Par exemple, si vous souhaitez tester si le dernier échantillon a réussi, vous pouvez utiliser

$ {JMeterThread.last_sample_ok}

If Controller starting with JMeter 3.4

ou toute variable que vous voulez qui contient vrai/faux

$ {myVar}

  • Option 2: utilisez une fonction ($ { __ jexl ()} est conseillée) pour évaluer une expression qui doit retourner vrai ou faux. Par exemple, si COUNT est égal à 1:

$ {__ jexl3 ("$ {COUNT}" == "1",)}

OR

$ {__ jexl3 ($ {COUNT} == 1,)}

If Controller with expression starting with JMeter 3.4

À partir de 4.0, si vous n'utilisez pas la "Interpréter la condition comme une expression variable?", Un avertissement en ROUGE s'affiche:

If Controller using javascript in JMeter 3.4

Si vous souhaitez en savoir plus sur JMeter et les tests de performances, cela livre peut vous aider.

7
UBIK LOAD PACK

Comme l'a dit Gerrie, vous devez vérifier votre variable

${my_var} == 'value'

Mais soyez prudent avec les ' Variables définies par l'utilisateur '

Notez que tous les éléments UDV d'un plan de test - quel que soit leur emplacement - sont traités au démarrage.

Cela signifie essentiellement que vous ne pouvez pas définir de "variables définies par l'utilisateur" dans un "contrôleur If". Jetez plutôt un œil au "BeanShell".

5
Carlos Tasada

Remplacez: $ {my_variable} == '1' par "$ {my_variable}" == "1"

3
Carlos

Check the image

J'ai utilisé ${code_g1}== 200 en état et cela a fonctionné pour moi.

0
Rakesh Ramesh Modi