JMeter“if controller”有参数吗?

时间:2011-04-18 12:08:59

标签: jmeter

我正在阅读JMeter documentation并看到有关“如果控制器”的信息框:

  

当条件被解释为Javascript时,脚本没有可用的变量。如果需要访问此类变量,请选择“将条件解释为变量表达式?”并使用__javaScript()函数调用。然后,您可以在脚本中使用对象“vars”,“log”,“ctx”等。

我不太关注这个。这是否意味着如果我想访问“用户定义的参数”,那么我只能通过编写一些JavaScript来访问它?然后,此框后面的示例引用“$ {COUNT}”

有人可以澄清一下If控制器的使用情况,可能只有一两个例子吗?

9 个答案:

答案 0 :(得分:33)

所有这些答案都是错误的!您需要将变量引用放在引号中,如下所示:

"${my_variable}"=="foo"

答案 1 :(得分:20)

你可以简单地使用像

这样的东西
${my_variable}=='1'

有时JMeter文档会令人困惑:)

编辑2017年9月27日:

这里的答案有效但在线程数超过40时会对性能产生非常不利影响。

请参阅下文,了解正确且效果最佳的答案:

请参阅:

答案 2 :(得分:8)

UNCHECK CHECKBOX “将条件解释为变量表达式”

我浪费了几个小时而没有取消选中此复选框。它在声明结尾处使用和不使用分号(;)。确保在调用if控制器之前设置了用户定义的变量。

以下所有变体对我来说都适用于雅加达Jmeter 1.5

  • $ {__使用Javascript( “$ {HOMEPAGE}” == “Y”)}
  • $ {__使用Javascript( “$ {HOMEPAGE}” == “Y”)};
  • “$ {HOMEPAGE}” == “Y”
  • “$ {HOMEPAGE}” == “Y”;

答案 3 :(得分:8)

上帝保佑http://habrahabr.ru 尝试过直到找到这些。 enter image description here

使用引号是我的解决方案。

答案 4 :(得分:6)

如果Controller将在内部使用javascript来评估条件,但这会导致性能下降。

更好的选项(默认从JMeter 4开始,请参阅https://bz.apache.org/bugzilla/show_bug.cgi?id=61675)是检查“将条件解释为变量表达式?”,然后在条件字段中有2个选项:

  • 选项1:使用包含true或false的变量。例如,如果要测试最后一个样本是否成功,可以使用
  

$ {JMeterThread.last_sample_ok}

If Controller starting with JMeter 3.4

或您想要的包含true / false

的任何变量
  

$ {myVar的}

  • 选项2:使用函数(建议使用$ {__jexl3()}来评估必须返回true或false的表达式。 例如,如果COUNT等于1:
  

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

OR

  

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

If Controller with expression starting with JMeter 3.4

从4.0开始,如果您不使用“解释条件作为变量表达式?”,将显示RED中的警告:

If Controller using javascript in JMeter 3.4

如果您想了解有关JMeter和性能测试的更多信息,book可以为您提供帮助。

答案 5 :(得分:5)

Gerrie说你需要检查你的变量

${my_var} == 'value'

但请注意'User Defined Variables'

  

请注意a中的所有UDV元素   测试计划 - 无论他们在哪里 -   在开始时处理。

这基本上意味着你无法在'If Controller'中定义'User Defined Variables'。请改为查看'BeanShell'。

答案 6 :(得分:3)

替换: $ {} my_variable == '1' 同 “$ {my_variable}”==“1”

答案 7 :(得分:0)

Check the image

我在条件中使用${code_g1}== 200并且它对我有效。

答案 8 :(得分:0)

如果它的字符串值通过如下并且其性能有效

$ {__ groovy(“ $ {key}” ==“ value”)}