逻辑控制之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条件控制器的更多相关文章

  1. JMeter 逻辑控制之While循环控制器(While Controller)

    逻辑控制之While循环控制器(While Controller)   by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13 1.   添加While Control ...

  2. Jmeter --- 逻辑控制之if控制器

    一.背景 在实际工作中,当使用Jmeter做性能脚本或者接口脚本时,有可能会遇到需要对不同的条件做不同的操作,基于这种诉求,在Jmeter中可使用if控制器来实现 二.实际操作 逻辑控制器位置: 在线 ...

  3. Jmeter逻辑控制之if控制器

    一.背景 在实际工作中,当使用Jmeter做性能脚本或者接口脚本时,有可能会遇到需要对不同的条件做不同的操作,基于这种诉求,在Jmeter中可使用if控制器来实现 二.实际操作 逻辑控制器位置: 在线 ...

  4. 性能测试之jmeter逻辑控制种类详解一

    逻辑控制器介绍 Jmeter逻辑控制可以对元件的执行逻辑进行控制,除Once only Controller仅一次控制器以外,其他控制器都可以可以嵌套其他种类的控制器,下面是jmeter5.3支持的控 ...

  5. Jmeter(四十二)_控制器下遍历一组参数

    概述 在接口自动化的过程中,经常遇到需要遍历的参数组.jmeter在中,foreach控制器可以实现遍历参数,但是只能有一个入参.一旦遇到数组,foreach控制器表示我也无能为力... 为了解决这个 ...

  6. JMETER 使用BeanShell 配合 if 控制器实现逻辑控制

    业务场景 在登录后,我们根据登录的响应,判断是否执行下一步的操作. 实现步骤 1.在登录采样器树中增加BeanShell 监听器. 作用是在线程上下文变量中增加一个变量,表示登录是否成功. beans ...

  7. Jmeter 逻辑控制器之吞吐量控制器(Throughput Controller)

    吞吐量控制器(Throughput Controller)用来控制其下元件的执行次数,并无控制吞吐量的功能,想要控制吞吐量可以用Constant Throughput Timer,吞吐量控制器有两种模 ...

  8. Jmeter逻辑控制器之If Controller的使用解析

    一.If Controller概述 类似于编程语言中if语句,根据给定表达式的值决定是否执行该节点下的子节点,表达式的值 为true则执行,为false则不执行,默认使用javascript语法进行判 ...

  9. jmeter断言:断言条件之间是“或”的关系

    有时,我们在做断言时,需要同时满足一系列条件,这在jmeter自带响应断言中已经实现: 有时,同一请求在不同时间,返回的响应是不同的,而这都是正确的响应,也就是说,我们判断的条件之间是或的关系,此时, ...

  10. Jmeter(三十八)while控制器实现ssh三次重连

    在jmeter中,可以使用SSH协议连接主机进行相关操作, 步骤如下 首先添加一个ssh command  我们的测试交流群:317765580 在command中填写远程连接的必要信息 结果树中可以 ...

随机推荐

  1. Java8新特性——接口静态方法

    概述 从Java8开始接口发生两个大的改变,一个是引入了default关键字,另个一个就是允许静态方法的存在. default关键字在<Java8新特性default关键字,引出Java多继承问 ...

  2. Android 13 - Media框架(21)- ACodec(三)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们一起来了解 ACodec 是如何通过 configureCodec 方法配置 OMX 组件的,因为 configureCodec 代码比较 ...

  3. 地图坐标转换 WGS84、BD09与GCJ02的相互转换

    高德地图 WGS84转GCJ02 export function wgs84ToGcj02(lng, lat) { if (out_of_china(lng, lat)) { return [lng, ...

  4. WPF显示网络图片的几种方法

    1.利用数据流 1 Image img; 2 byte[] btyarray = GetImageFromResponse(imageUrl); 3 4 //字节数据转流 5 MemoryStream ...

  5. 一文搞懂 ARM 64 系列: 寄存器

    ARM 64中包含多种寄存器,下面介绍一些常见的寄存器. 1 通用寄存器 ARM 64包含31个64bit寄存器,记为X0~X30. 每一个通用寄存器,它的低32bit都可以被访问,记为W0~W30. ...

  6. C#.NET 使用HttpWebRequest发送JSON

    方法: public static string HttpPostJson(string url, string postStr, int timeOut, string charset) { Htt ...

  7. asp.net中gridview隐藏一列并且使用这列数据的方法

    方法一:在RowCreated事件中添加如下代码可隐藏此列,使用this.grdView.Rows[index].Cells[1].Text获取值,index为行号. 1 protected void ...

  8. scab2

    package com.cmb.cox.utils;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;im ...

  9. Nuxt 3 路由系统详解:配置与实践指南

    title: Nuxt 3 路由系统详解:配置与实践指南 date: 2024/6/21 updated: 2024/6/21 author: cmdragon excerpt: 摘要:本文是一份关于 ...

  10. python实现推送消息到微信公众号

    使用到库: Requests 实现方式: 微信已开放了对应的接口,直接通过python的requests库,发起请求,实现推送消息到公众号 微信公众号准备: 1.没有注册微信公众号,可以使用微信提供的 ...