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

news2024/11/13 14:54:12

文章目录

    • 一、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.coloradmin.cn/o/564773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSDN问答机器人

文章目录 前言一、背景二、总体流程三、构建知识库四、粗排五、精排六、Prompt总结相关博客 前言 先看结果: 已经连续很多周获得了第二名(万年老二), 上周终于拿了一回第一, 希望继续保持. &#x1f601; 这是今天的榜单, 采纳的数量相对较少, 之前基本上维持在100 重点说明…

数字韧性助力金融科技行稳致远 同创永益亮相2023双态IT武汉樱花论坛

2023年4月7日&#xff0c;由ITSS数据中心运营管理组DCMG指导&#xff0c;双态IT论坛主办的以“分布式架构和云原生时代的运维软件进化”为主题的“双态IT武汉樱花论坛”在武汉成功举办&#xff0c;共有来自银行、保险、证券等行业用户及企业代表近百人参会。 云原生时代下&am…

【Linux】-yum的使用

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

某生存游戏玩家属性值分析

0x01 背景 这是一款丧尸生存的多人沙盒类游戏&#xff0c;角色在废墟之城内不断的搜刮&#xff0c;强化自己的装备和建造设施来抵御丧尸的无休止攻击&#xff0c;记住&#xff0c;这是一款团队合作游戏&#xff0c;你面对的丧尸随时可能夺走你的性命&#xff01; 0x02 玩家结…

【C++ Primer Plus】基础知识

C站的小伙伴们&#xff0c;大家好呀&#xff01;我最近开始阅读学习《C Primer Plus》这本书&#xff0c;在这里和大家一起分享。 下面是本书的第二章《开始学习C》 开始学习C 进入Cmain&#xff08;&#xff09;函数C注释C预处理器和iostream文件头文件名名称空间使用count进行…

【Linux专区】 Linux is not unix | Linux发展史 | Linux应用现状

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《Linux专区》&#x1f448; 前言&#xff1a; 上次提前带大家搭建了Linux的环境&#xff0c;其实之前应该还有一步的&#xff0c;就是向大家介绍Linux发展史&…

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

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

SCMA基本原理介绍

SCMA: Sparse Code Multiple Access SCMA基本原理 我们考虑一个同步&#xff08;synchronous&#xff09;的SCMA系统&#xff0c; 含1个基站&#xff08;Base Station, BS&#xff09;&#xff1b; J J J个用户&#xff08;so called layers&#xff09;&#xff1b;K个OFDM…

算法练习-2:送外卖

n 个小区排成一列&#xff0c;编号为从 0 到 n-1 。一开始&#xff0c;美团外卖员在第0号小区&#xff0c;目标为位于第 n-1 个小区的配送站。 给定两个整数数列 a[0]~a[n-1] 和 b[0]~b[n-1] &#xff0c;在每个小区 i 里你有两种选择&#xff1a; 1) 选择a&#xff1a;向前 a[…

shiro环境搭建

源码部署 这种方法相对复杂&#xff0c;如果不需要分析源码直接用docker就行 前置条件&#xff1a;Maven Ideal Tomcat 下载方式1&#xff1a;https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4&#xff0c;然后将文件夹导入ideal下载方式2&#xff1a;将shiro…

装饰者模式-java实现

的简介 装饰模式又称为“包装(Wrapper)模式”&#xff0c;以对客户端透明的方式扩展对象的功能&#xff0c;是继承关系的一个替代方案。动态地给对象添加一些额外地职责&#xff0c;就增加功能而言&#xff0c;装饰模式比生成子类更加灵活。 一般来说&#xff0c;一些特殊场景…

C++ new和delete详解

文章目录 1、 C C C内存分布2、 C C C内存管理方式3、 n e w new new 和 d e l e t e delete delete 底层实现4、定位 n e w new new表达式&#xff08;了解&#xff09;5、 m a l l o c 、 f r e e 和 n e w 、 d e l e t e malloc、free和new、delete malloc、free和new、de…

初识Linux:第六篇

初识Linux&#xff1a;第六篇 初识Linux&#xff1a;第六篇1.Linux 软件包管理器 yum2.Linux下的软件生态3.Linux中编辑器vim的使用3.1命令模式3.11控制光标移动3.12复制&#xff0c;粘贴&#xff0c;剪切&#xff0c;删除3.13替换&#xff0c;大小写转换3.14撤销与反撤销3.15查…

深度学习笔记之循环神经网络(六)长短期记忆神经网络(LSTM)

深度学习笔记之循环神经网络——长短期记忆神经网络[LSTM] 引言回顾&#xff1a; RNN \text{RNN} RNN的反向传播过程 RNN \text{RNN} RNN反向传播的梯度消失问题 长短期记忆神经网络遗忘门结构输入门结构遗忘门与输入门的特征融合操作输出门结构 个人感悟 引言 上一节介绍了循…

【C++】哈希——unordered系列容器哈希概念哈希冲突

文章目录 1. unordered系列的关联式容器1.1 引言1.2 unordered_map的使用说明1.3 unordered_set的使用说明1.4 unordered_set和unordered_map的应用1.5 性能比较 2. 哈希概念3. 哈希函数4. 哈希冲突5. 哈希冲突的解决——开散列和闭散列5.1 闭散列5.2 开散列 1. unordered系列的…

C++:征服C指针:关于指针

关于指针 1.看一个简单的程序&#xff0c;来接触下指针二级目录三级目录 本章节&#xff0c;我们重点分析C指针&#xff0c;首先我们从指针的概念谈起 &#x1f49a;&#x1f49a;&#x1f49a; 指针是一种保存变量地址的变量&#xff0c;并在C中频繁使用在C语言标准中&#xf…

数据结构与算法01:时间复杂度

目录 【复杂度分析】 【降低时间复杂度】 降低时间复杂度的必要性 【每日一练】 不管是使用什么编程语言或者哪种数据库&#xff0c;不管是解决项目中的什么问题&#xff0c;都离不开数据结构与算法。所谓数据结构就是指某一种数据的存储结构&#xff0c;所谓算法就是操作这…

【ClickHouse】

文章目录 一、表引擎1、表引擎的作用2、TinyLog3、Memory4、MergeTree二、数据库引擎1、作用--跨种类交换数据2、示例 三、MergeTree引擎1、简单使用2、分区partition by3、主键primary key4、order by&#xff08;必填&#xff09; 一、表引擎 1、表引擎的作用 CK表引擎决定…

U盘无法格式化?试试这几种快速有效的方法!

我们在通过Windows文件资源管理器、磁盘管理或Diskpart命令格式化U盘过程中&#xff0c;会遇到Windows无法格式化U盘。导致出现该问题的原因可能有以下几种&#xff1a; U盘被病毒和恶意软件感染&#xff1b; U盘有坏道&#xff1b; U盘已经物理损坏&#xff1b; 1.消除可能…

数据类型的陷进,从表象看本质!

哪些值转为布尔值为false 1、undefined&#xff08;未定义&#xff0c;找不到值时出现&#xff09; 2、null&#xff08;代表空值&#xff09; 3、false&#xff08;布尔值的false&#xff0c;字符串"false"布尔值为true&#xff09; 4、0&#xff08;数字0&…