JMeter逻辑控制器之IF控制器

发布时间:2023年12月25日

1.应用背景

??存在一些使用场景,比如:一个测试场景中,包含多个请求,当上一个请求的结果不符合要求,就不需要执行下一个请求。(例如:某产品的功能,质量任务执行,如果当现在的任务状态是执行中,就不用再执行下一个请求了

2.介绍

??如下是JMeter官网对IF控制器的介绍
在这里插入图片描述

3.使用

??IF条件判断,IF控制器可以在循环的基础上加判断,当条件为True的时候执行下一个请求。反之,当条件为false的时候,就不执行下一个请求。

4.添加控制器

??在线程组中或相关控制器中,选中“线程组”右键 —> 添加 —> 逻辑控制器 —> 如果(If)控制器,如图所示:
在这里插入图片描述

在这里插入图片描述

Expression (must evaluate to true or false) : 表达式(结果值必须是true或false)。在右边文本框中输入的条件值必须是true 或 false。

Interpret Condition as Variable Expression:默认勾选项,将条件解释为变量表达式(需要使用__jexl3 or __groovy 表达式)

Evaluate for all children:条件作用与每个子节点,默认不勾选。仅在If Controller入口处判断一次

use status of last sample: 作用就是只有当上一个请求成功后,才会执行if控制器下的请求。

注意:
1、文本框上的黄色感叹号,就是建议采用默认的jexl3 or groovy 表达式,以提高性能。
2、if 控制器 只能作用于其下的子项。

5.表达式说明

jexl3表达式格式
${__jexl3(条件表达式)}

groovy 表达式
${__groovy(条件表达式}
逻辑表达式说明

==
含义:是否等于
示例:如KaTeX parse error: Expected group after '_' at position 2: {_?_jexl3({VAR}==1,)},判断${VAR}变量是否等于1。

!=
含义:不等于
含义:如KaTeX parse error: Expected group after '_' at position 2: {_?_jexl3({VAR}!=1,)},判断${VAR}变量是否不等于1。

!
含义:非
示例:如KaTeX parse error: Expected group after '_' at position 2: {_?_jexl3(!({VAR}!=2),)},对${VAR}的值不等于2,其判断为真,那么执行IF下的子项。

&&
含义:并且
示例:如KaTeX parse error: Expected group after '_' at position 2: {_?_jexl3({VAR}1 && "KaTeX parse error: Expected 'EOF', got '}' at position 18: …ame}" != "李四",)}?,也就是{VAR}1和表达式 “${name}” != "张四"均为真时,执行IF控制器下的子项。

||
含义:或
示例:如KaTeX parse error: Expected group after '_' at position 2: {_?_jexl3({VAR}1 && "KaTeX parse error: Expected 'EOF', got '}' at position 18: …ame}" != "李四",)}?,也就是{VAR}1和表达式 “${name}” != "张四"其中一项为真时,执行IF控制器下的子项。

>=
含义:大于等于

示例:如${__jexl3(${count}>=15,)}。也就是${count}>=15,其判断为真,那么执行IF控制器下的子项。

注意:
如果判断表达式是字符串,此时,必须要用引号,变量都认为时字符串的形式,如:

${__jexl3("${name}"=="成都",)},不能用${__jexl3(${name}=="成都",)}

6.函数助手调用

??启动jmeter界面后,可以在JMeter的选项菜单中找到函数助手对话框,如下图所示:
在这里插入图片描述

7.举例

应用场景

??在实际项目测试油这样一个场景,质量任务执行,同一个任务,如果任务的状态在运行中,再次进行任务提交的话就不会提交。

重点

??在实际应用IF控制器的时候,需要确定IF条件的判断结果。
如下是测试产品过程中IF条件的判断标志。
在这里插入图片描述
实现

通过if控制器进行判断是否需要执行任务,其中data就是上图所示得值即“false”。

${__jexl3("${data}"!="true",)}
文章来源:https://blog.csdn.net/qq_28203181/article/details/135191326
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。