【P29】JMeter IF 控制器(If Controller)


一、IF 控制器(If Controller)参数说明

可以控制其下面的子/后代元素是否执行;如果为 true 则执行;如果为 false 则都不执行

选择线程组右键 >>> 添加 >>> 逻辑控制器 >>> IF 控制器(If Controller)

在这里插入图片描述

(1)、Expression (must evaluate to true or false) :表达式(值必须是true或false),也就是说,在右边文本框中输入的条件值必须是true 或 false,(默认情况下)

(2)、Use status of last sample:快捷方式,取上一次取样器结果是否通过,会引用一个变量,点击后,会在 Expression 框中生成:${JMeterThread.last_sample_ok}

(3)、Interpret Condition as Variable Expression?:默认勾选项,将条件解释为变量表达式(需要使用__jexl3 or __groovy 表达式)【选中这一项时表示:判断变量值是否等于字符串true(不区分大小写)】

  • 不勾选:直接输入我们需要判断的表达式即可,判断表达式为真时,执行if控制器下的请求,例如“1!=2”,则一定会执行下面的http请求

  • 勾选:这个时候,expression中不能直接填写条件表达式,需要借助函数将条件表达式计算为true/false,可以借助的函数有_jexl3和_groovy

(4)、Evaluate for all children?:条件作用于每个子项,执行每个子项,都会判断一次条件。一般不勾选,条件一般只判断一次即可

注:

  • 文本框上的黄色感叹号,就是提示你,建议采用__jexl3 or __groovy 表达式,以提高性能,也就是默认的方式

  • IF 控制器 只能作用于其下的子项

  • jexl全称:Jakarta Commons Jexl,是一种表达式语言(Java Expression Language)解释器

在if逻辑控制器的Expression中不能直接填写条件表达式,需要借助函数将条件表达式计算为true/false,可以借助的函数有__jexl3和__groovy函数。

A:变量,比如 ${flag},如果值为 true,则认为通过,否则认为是 fase

B:函数,条件判断同时支持 js、groovy、jexl3 三种脚本语言,出于性能原因,不建议使用 js

  • js 语法举例:KaTeX parse error: Expected '}', got 'EOF' at end of input: …_\_javaScript("{count}" ==“1"”)}

  • groovy 语法举例:${__groovy(vars.get(“count”) !=“1”)}

  • jexl3 语法举例:KaTeX parse error: Expected '}', got 'EOF' at end of input: {\_\_jexl3({count}< 10)}

二、测试计划设计

(1)、测试计划右键 <<< 添加 <<< 线程(用户)<<< 线程组

在这里插入图片描述

(2)、线程组右键 <<< 添加 <<< 配置元件 <<< 用户定义的变量

在这里插入图片描述

  • count : 1

  • flag : true

(3)、线程组右键 <<< 添加 <<< 逻辑控制器 <<< IF 控制器

在这里插入图片描述

  • 勾选 Interpret Condition as Variable Expression?
${flag}

(4)、IF 控制器右键 <<< 添加 <<< 取样器 <<< 调试取样器

在这里插入图片描述

(5)、线程组右键 <<< 添加 <<< 监听器 <<< 查看结果树

(6)、点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

如图,IF 控制器 返回的是 true,所以会执行 调试取样器

(7)、修改 用户定义的变量 组件,将 flag 参数修改为 false

在这里插入图片描述

(8)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

如图,IF 控制器 返回的是 false,所以不会执行 调试取样器

(9)、修改 用户定义的变量 组件,将 flag 参数修改为 aaaaa

在这里插入图片描述

(10)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

如图,IF 控制器 返回的是 false,所以不会执行 调试取样器

用户定义的变量 组件中的 flag 值只要不是 true,则都为 false

2.1、groovy 写法

(1)、修改 用户定义的变量 组件,将 flag 参数修改为 true

在这里插入图片描述

(2)、修改 IF 控制器,使用 groovy 语法

在这里插入图片描述

// 两种写法选一种即可

${__groovy(vars.get("count")=="1")}
${__groovy("${count}"=="1")}

(3)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

IF 控制器 中的 ${__groovy(vars.get("count")=="1")} 返回值为 true,所以 调试取样器 会执行

(4)、修改 用户定义的变量 组件,将 count 参数修改为 2

在这里插入图片描述

(5)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

IF 控制器 中的 ${__groovy(vars.get("count")=="1")} 返回值为 false,count 值为 2,所以 调试取样器 不会执行

2.2、javaScript 写法

(1)、修改 用户定义的变量 组件,将 count 参数修改为 1

在这里插入图片描述

  • count : 1

(2)、修改 IF 控制器,使用 javaScript 语法

在这里插入图片描述

${__javaScript("${count}"=="1")}

(3)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

IF 控制器 中的 ${__javaScript("${count}"=="1")} 返回值为 true,所以 调试取样器 会执行

(4)、修改 用户定义的变量 组件,将 count 参数修改为 2

在这里插入图片描述

(5)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

IF 控制器 中的 ${__javaScript("${count}"=="1")} 返回值为 false,count 值为 2,所以 调试取样器 不会执行

2.3、jexl3 写法

(1)、修改 用户定义的变量 组件,将 count 参数修改为 1

在这里插入图片描述

  • count : 1

(2)、修改 IF 控制器,使用 jexl3 语法

在这里插入图片描述

// 四种写法,选一种即可

${__jexl3(${count}=="1")}
//${__jexl3(${count}==1)}
//${__jexl3(${count}<10)}
//${__jexl3("${count}"=="1")}

(3)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

IF 控制器 中的 ${__jexl3(${count}=="1")} 返回值为 true,所以 调试取样器 会执行

(4)、修改 用户定义的变量 组件,将 count 参数修改为 2

在这里插入图片描述

(5)、点击清除全部,点击启动,点击查看结果树,查看调试取样器是否执行

在这里插入图片描述

IF 控制器 中的 ${__jexl3(${count}=="1")} 返回值 为 false,count 值为 2,所以 调试取样器 不会执行

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值