JMeter"if controller"有参数吗?

Ben*_*ynn 26 jmeter

我正在阅读JMeter文档并遇到有关"如果控制器"的信息框:

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

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

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

jam*_*her 33

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

"${my_variable}"=="foo"
Run Code Online (Sandbox Code Playgroud)


Ger*_*nck 21

你可以简单地使用类似的东西

${my_variable}=='1'
Run Code Online (Sandbox Code Playgroud)

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

2017年9月27日编辑:

这里的答案有效,但当线程数超过40时,性能影响非常严重.

请参阅下面的正确和最佳表现答案:

看到:

  • 好的,有关字符串匹配的更多信息.假设MY_VAR =苹果.$ {MY_VAR} =="apples"#=>返回false."$ {MY_VAR}"=="apples"#=>返回true.假设MY_VAR ="苹果".$ {MY_VAR} =="apples"#=>返回true."$ {MY_VAR}"=="apples"#=>返回false.如果在BeanShell中设置变量,则为vars.put("MY_VAR","apples"); 那你是第一种情况.你可以做vars.put("MY_VAR","\"apples \""); 但是你可能最好只将变量名称放在一个If Controller字符串比较的引号中. (8认同)

小智 8

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

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

以下所有变体在雅加达Jmeter 1.5中都适用于我

  • $ {__使用Javascript( "$ {}首页" == "Y")}
  • $ {__使用Javascript( "$ {HOMEPAGE}" == "Y")};
  • "$ {}首页" == "Y"
  • "$ {}首页" == "Y";


小智 8

上帝保佑http://habrahabr.ru 尝试过直到找到这些.在此输入图像描述

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


UBI*_*ACK 7

如果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,)}

如果Controller的表达式以JMeter 3.4开头

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

如果Controller在JMeter 3.4中使用javascript

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


Car*_*ada 5

正如格里所说,你需要检查你的变量

${my_var} == 'value'
Run Code Online (Sandbox Code Playgroud)

但要小心' 用户定义的变量 '

请注意,测试计划中的所有UDV元素 - 无论它们在何处 - 都会在开始时进行处理.

这基本上意味着你不能在'If Controller'中定义'User Defined Variables'.看一下'BeanShell'吧.