JMeter 逻辑控制之IF条件控制器
逻辑控制之IF条件控制器
测试环境
JMeter-5.4.1
循环控制器介绍
添加While Controller
右键线程组->添加->逻辑控制器->While控制器
控制器面板介绍
添加后,面板如下
仅Expression值为true
,才会执行位于其下的操作
最好勾选(默认配置)Interpret Condition as Variable Expression?,这样Expression输入框可以有两种输入选择:
输入一个值为
true
或者false
的变量比如,如果你想测试,最后一个采样器执行是否成功,可以输入
${JMeterThread.last_sample_ok}
输入对bool表达式求值的函数(建议使用
${__jexl3()}
,当然也可以用支持__groovy
) ,形如${__jexl3(${COUNT} < 10 && "${VAR}" == "abcd",)}
例如,没勾选上述配置之前,使用条件:${__jexl3(${VAR} == 23)}
,该条件计算结果(true
或者false
)会被传递给JavaScript,最后由JavaScript反回该结果值。勾选上述配置之后,会将该条件计算结果直接与true
比较,不需要使用JavaScript.
检测变量是否为定义或者为null,可以采用以下表达式,假设变量命名为 myVar:
${__jexl3("${myVar}" == "\${myVar}")}
或者:
${__jexl3("${myVar}" != "\${myVar}")}
如果不勾选 Interpret Condition as Variable Expression? 控制器会使用javascript计算表达式,这会带来很大的性能消耗,并且降低测试的扩展性。
Evaluate for all children
如果勾选,则执行其下所有子组件时都会重新计算条件值,否则仅在进入控制器时时进行计算
示例:如下图,If Controller条件为${__jexl3("${myVar}" == "\${myVar}")}
,执行HTTP Request1之前没有设置myVar变量。
没勾选Evaluate for all children之前,运行时,HTTP Request2也会被执行,反之,HTTP Request2不会被执行。
例子(JavaScript)
${COUNT} < 10
"${VAR}" == "abcd"
如果在解释代码时出错,那么条件结果值会被设置为false
当使用__groovy
时,注意不要在字符串中使用变量替换,形如${__groovy("${myVar}" == 1)}
,否则使用了改变脚本的变量不能被缓存。取而代之,使用vars.get("myVar")
,参见下文
例子(Variable Expression)
${__groovy(vars.get("myVar") != "Invalid" )}
(检查myVar变量是否等于Invalid)${__groovy(vars.get("myInt").toInteger() <=4 )}
(检查myInt变量是否小于等于4)${__groovy(vars.get("myMissing") != null )}
(检查是否设置了myMissing变量)${__jexl3(${COUNT} < 10)}
${RESULT}
${JMeterThread.last_sample_ok}
(检查最后一个采样器采样是否成功)
JMeter 逻辑控制之IF条件控制器的更多相关文章
- JMeter 逻辑控制之While循环控制器(While Controller)
逻辑控制之While循环控制器(While Controller) by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13 1. 添加While Control ...
- Jmeter --- 逻辑控制之if控制器
一.背景 在实际工作中,当使用Jmeter做性能脚本或者接口脚本时,有可能会遇到需要对不同的条件做不同的操作,基于这种诉求,在Jmeter中可使用if控制器来实现 二.实际操作 逻辑控制器位置: 在线 ...
- Jmeter逻辑控制之if控制器
一.背景 在实际工作中,当使用Jmeter做性能脚本或者接口脚本时,有可能会遇到需要对不同的条件做不同的操作,基于这种诉求,在Jmeter中可使用if控制器来实现 二.实际操作 逻辑控制器位置: 在线 ...
- 性能测试之jmeter逻辑控制种类详解一
逻辑控制器介绍 Jmeter逻辑控制可以对元件的执行逻辑进行控制,除Once only Controller仅一次控制器以外,其他控制器都可以可以嵌套其他种类的控制器,下面是jmeter5.3支持的控 ...
- Jmeter(四十二)_控制器下遍历一组参数
概述 在接口自动化的过程中,经常遇到需要遍历的参数组.jmeter在中,foreach控制器可以实现遍历参数,但是只能有一个入参.一旦遇到数组,foreach控制器表示我也无能为力... 为了解决这个 ...
- JMETER 使用BeanShell 配合 if 控制器实现逻辑控制
业务场景 在登录后,我们根据登录的响应,判断是否执行下一步的操作. 实现步骤 1.在登录采样器树中增加BeanShell 监听器. 作用是在线程上下文变量中增加一个变量,表示登录是否成功. beans ...
- Jmeter 逻辑控制器之吞吐量控制器(Throughput Controller)
吞吐量控制器(Throughput Controller)用来控制其下元件的执行次数,并无控制吞吐量的功能,想要控制吞吐量可以用Constant Throughput Timer,吞吐量控制器有两种模 ...
- Jmeter逻辑控制器之If Controller的使用解析
一.If Controller概述 类似于编程语言中if语句,根据给定表达式的值决定是否执行该节点下的子节点,表达式的值 为true则执行,为false则不执行,默认使用javascript语法进行判 ...
- jmeter断言:断言条件之间是“或”的关系
有时,我们在做断言时,需要同时满足一系列条件,这在jmeter自带响应断言中已经实现: 有时,同一请求在不同时间,返回的响应是不同的,而这都是正确的响应,也就是说,我们判断的条件之间是或的关系,此时, ...
- Jmeter(三十八)while控制器实现ssh三次重连
在jmeter中,可以使用SSH协议连接主机进行相关操作, 步骤如下 首先添加一个ssh command 我们的测试交流群:317765580 在command中填写远程连接的必要信息 结果树中可以 ...
随机推荐
- u8二次开发再遇问题再总结
在调用api生成采购入库单时,报错:该操作会造成订单到货和入库同时存在,请重新检查操作!普通采购必有订单,存货[0501-0304-0075]不能手工录入 这是因为:采购入库单单据必须要录入上游单据, ...
- Wpf虚拟屏幕键盘
在Wpf使用虚拟键盘有基于osk和tabtip,后者只能在win8和win10之后电脑使用,而且两者在wpf中调用时都必须提升为管理员权限,实际应用中还是不方便. 今天介绍的方法是使用第三方库oskl ...
- wrk压测工具安装和使用
wrk压测工具安装: mkdir wrk git clone https://github.com/wg/wrk.git cd wrk/ cp wrk /usr/sbin/ wrk压测工具使用 使用方 ...
- swap文件修复
修复swap文件 vim -r /aaaa.swap
- python-判断两个序列的成员是否一样
目的:判断两个序列的成员是否一样,如:list1 = [1, 2],list2 = [2, 1],则两个序列的成员是一样的. 实现:借助集合set()的性质实现. 代码如下: 1 if __name_ ...
- http与https详解
1.http HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准.HTTP是一个基于TC ...
- Bean Searcher v4.3.0 重大更新!
往期阅读: 我这样写代码,比直接使用 MyBatis 效率提高了 100 倍 最近火起的 Bean Searcher 与 MyBatis Plus 倒底有啥区别? Bean Searcher v3.8 ...
- python 文件查找及截取字符串 (替换,分割) demo
#"F:\\test.txt" ''' # 例1:字符串截取 str = '12345678' print str[0:1] # 例2:字符串替换 str = 'akakak' s ...
- 阅读mmdetection3d框架的源码探索其构建dataset的流程
在查看一些基于mmdetection3d构建的代码的时候,一开始会摸不着头脑,它的dataset到底是怎么构造的? 接下来就直接下载mmdetection3d这个仓库,然后去分析里面的代码. 可以看到 ...
- SpringBoot 过滤器更改 Request body ,并实现数据解密
客户端.服务端网络通信,为了安全,会对报文数据进行加解密操作. 在SpringBoot项目中,最好使用参考AOP思想,加解密与Controller业务逻辑解耦,互不影响. 以解密为例:需要在reque ...