我正在阅读JMeter documentation并看到有关“如果控制器”的信息框:
当条件被解释为Javascript时,脚本没有可用的变量。如果需要访问此类变量,请选择“将条件解释为变量表达式?”并使用__javaScript()函数调用。然后,您可以在脚本中使用对象“vars”,“log”,“ctx”等。
我不太关注这个。这是否意味着如果我想访问“用户定义的参数”,那么我只能通过编写一些JavaScript来访问它?然后,此框后面的示例引用“$ {COUNT}”
有人可以澄清一下If控制器的使用情况,可能只有一两个例子吗?
答案 0 :(得分:33)
所有这些答案都是错误的!您需要将变量引用放在引号中,如下所示:
"${my_variable}"=="foo"
答案 1 :(得分:20)
你可以简单地使用像
这样的东西${my_variable}=='1'
有时JMeter文档会令人困惑:)
编辑2017年9月27日:
这里的答案有效但在线程数超过40时会对性能产生非常不利影响。
请参阅下文,了解正确且效果最佳的答案:
请参阅:
答案 2 :(得分:8)
UNCHECK CHECKBOX “将条件解释为变量表达式”
我浪费了几个小时而没有取消选中此复选框。它在声明结尾处使用和不使用分号(;)。确保在调用if控制器之前设置了用户定义的变量。
以下所有变体对我来说都适用于雅加达Jmeter 1.5
答案 3 :(得分:8)
上帝保佑http://habrahabr.ru 尝试过直到找到这些。
使用引号是我的解决方案。
答案 4 :(得分:6)
如果Controller将在内部使用javascript来评估条件,但这会导致性能下降。
更好的选项(默认从JMeter 4开始,请参阅https://bz.apache.org/bugzilla/show_bug.cgi?id=61675)是检查“将条件解释为变量表达式?”,然后在条件字段中有2个选项:
$ {JMeterThread.last_sample_ok}
或您想要的包含true / false
的任何变量$ {myVar的}
$ {__ jexl3(“$ {COUNT}”==“1”,)}
OR
$ {__ jexl3($ {COUNT} == 1,)}
从4.0开始,如果您不使用“解释条件作为变量表达式?”,将显示RED中的警告:
如果您想了解有关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)
我在条件中使用${code_g1}== 200
并且它对我有效。
答案 8 :(得分:0)
如果它的字符串值通过如下并且其性能有效
$ {__ groovy(“ $ {key}” ==“ value”)}