JMeter的“如果控制器”的参数?


问题内容

我正在阅读JMeter文档,并遇到有关“
If Controllers”的信息框:

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

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

有人可以用一个或两个例子来阐明If Controller的用法吗?


问题答案:

您可以简单地使用类似

${my_variable}=='1'

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

编辑2017年9月27日:

答案是可行的,但是 当线程数超过40时,会对性能造成严重影响。

参见以下正确和效果最佳的答案:

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

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

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

$ {JMeterThread.last_sample_ok}

如果Controller以JMeter 3.4开头

或任何您想要的包含true / false的变量

$ {myVar}

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

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

要么

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

从4.0开始,如果不使用“解释条件为变量表达式?”,则将显示红色警告:

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

看到: