jmeter控制器--if控制器
Posted gezirui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter控制器--if控制器相关的知识,希望对你有一定的参考价值。
一、背景
在实际工作中,当使用Jmeter做性能脚本或者接口脚本时,有可能会遇到需要对不同的条件做不同的操作,基于这种诉求,在Jmeter中可使用if控制器来实现
作用:根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断(如下图红框内的文字)。
二、实际操作
逻辑控制器位置:
在线程组下,执行:添加 ---->> 逻辑控制器 ---->> 如果(If)控制器
例如:要实现登录成功后进行其他操作,登录是否成功用正则表达式获取token来判断
那么看下if控制器,
参数:
- Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true(不区分大小写)
- Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式
示例一:使用表达式的方式进行判断:
if控制器判断的写法是 “”“变量”=="值" 这样的写法,if控制器下有个选项是Interpret Condition as Variable Expression?翻译过来意思是将条件解释为变量表达式?
if逻辑控制器控件中最重要就是Expression(must evaluate true or false)输入框,此处需要写入需要进行判断的表达式,从must evaluate true or false可知,实际使用时,只能填入true或者false这样的值,因此我们需要借助其他模块或者函数将需要进行判断的表达式(如 ${var}== 5)转换成true或false,判断才能生效,直接将${var}== 5这样的表达式写入Expression中是无效的。
从该控制器提示的信息中,可以借助__jexl3或者__groovy函数来计算表达式的值,这样着重介绍下__jexl3在 if控制器中的使用。
jexl全称:Jakarta Commons Jexl,是一种表达式语言(Java Expression Language)解释器。
JEXL Expression to evaluate:此处直接填写需要进行判断的表达式即可
表达式支持:
== 是否等于,如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1
!= 不等于,如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1
! 非,如${__jexl3(!(${VAR}!=1),)}对${VAR}!=1的结果取反
&&或|| 且与或,如 ${__jexl3(${VAR}==1 && ${name} != "heima",)}
> 或者>== 大于等于,如${__jexl3(${count}>=10,)}
那么此处判断的条件是token不等于0,填入if控制器中,执行
执行结果通过。
ps: 也可以使用用户自定义变量的方式,直接设置变量的值为true,也 可以进入if控制器
示例二:使用JavaScript进行条件解释
不勾选Interpret Condition as Variable Expression?选项,设置条件为token不等于0 ,进行执行
最后执行成功。
以上是关于jmeter控制器--if控制器的主要内容,如果未能解决你的问题,请参考以下文章