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

news/2024/10/18 5:51:21/

文章目录

    • 一、IF 控制器(If Controller)参数说明
    • 二、测试计划设计
      • 2.1、groovy 写法
      • 2.2、javaScript 写法
      • 2.3、jexl3 写法


一、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,所以 调试取样器 不会执行


http://www.ppmy.cn/news/79768.html

相关文章

“智汇新算力,众启Z力量”惠普发布全新一代Z系列工作站,共赢算力黄金时代

5月23日&#xff0c; “智汇新算力&#xff0c;众启Z力量”惠普Z系列新品发布会在上海盛大举行。本次发布会上&#xff0c;惠普Z 系列工作站焕新升级&#xff0c;以高算力、强稳定、强拓展的产品及解决方案&#xff0c;帮助各行业用户专注自身领域、驾驭复杂工作&#xff0c;从…

HNU-电路与电子学-小班3

第三次讨论 1 、直接用晶体管而不是逻辑门实现异或门&#xff0c;并解释这个电路是如何工作的。 &#xff08;6个 MOS 管构成&#xff09; 2 、通信双方约定采用 7 位海明码进行数据传输。请为发送方设计海明码校验位 生成电路&#xff0c;采用功能块和逻辑门为接收方设计海…

公司招了一个腾讯拿30K的人,让我见识到了什么是天花板···

前言 人人都有大厂梦&#xff0c;对于软件测试人员来说&#xff0c;BAT 为首的一线互联网公司肯定是自己的心仪对象&#xff0c;毕竟能到这些大厂工作&#xff0c;不仅薪资高待遇好&#xff0c;而且能力技术都能够得到提升&#xff0c;最关键的是还能够给自己镀上一层金&#…

Spring Boot 3.x 系列【39】应用部署 | 构建容器镜像

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.5 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 1. 概述2. docker-maven-plugin3. jib-maven-plugin4. spring-boot-maven-plugin1. 概述 Spring Boot官文中对镜像打包功…

Oracle-DQL(数据查询)笔记

目录 一、基本查询语句 二、过滤与排序 三、单行函数 四、多表查询 五、分组函数 六、子查询 DML&#xff1a;Data manipulation language 数据操纵语言DDL&#xff1a;Data Definition language 数据定义语言DCL&#xff1a;Data Controller language 数据控制语言 DML用…

URP的多Pass和Features用法

回到目录 大家好&#xff0c;我是阿赵。这里用一个传统的描边例子来说明一下&#xff0c;URP下怎么使用多Pass和Features。 一、传统多Pass描边 最常用的制作描边方法&#xff0c;就是写多一个Cull Front的Pass&#xff0c;然后通过法线方向扩展顶点&#xff0c;模拟描边的效…

Python实现ACO蚁群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

机试打卡 -05 接雨水(动态规划栈)

我的思路&#xff1a;依次计算每一列能接收的雨水量。 关键点&#xff1a;如何计算得到每一列所能接收到的雨水量&#xff1f; 某一列能够接收到的雨水量&#xff0c;取决于其左右两侧最高的柱子。仅有当左右两侧的柱子均高于该列的高度&#xff0c;该列才可收到雨水&#x…