最近工作不忙,利用空闲时间整理了下Jmeter的相关知识,下面给大家分享下Jmeter中 如果(if)控制的使用和应用。

如下图:线程组 > 添加 > 逻辑控制器 > 如果 (if) 控制器

Expression (must evaluate to true or false) :表达式(值必须是true或false),也就是说,在右边文本框中输入的条件值必须是true 或 false,(默认情况下)

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

Evaluate for all children?:条件作用于每个子项(具体理解见后面的列子说明)

注:

1、文本框上的黄色感叹号,就是提示你,建议采用__jexl3 or __groovy 表达式,以提高性能,也就是默认的方式。

2、if 控制器 只能作用于其下的子项

一、默认用法,采用__jexl3 or __groovy 表达式

如下图,if 控制器 下 有一个 访问百度首页 的取样器,只有if条件满足时,才会执行该取样器。采用默认方式,将条件1==1,放入 __jexl3表达式中。

如果不知道表达式如何使用,可使用Jmeter 的函数助手,如下:

二、直接输入条件

如下图,去掉 “Interpret Condition as Variable Expression?” 前面复选框,直接输入条件 1==1。访问百度首页的取样器将被执行。

三、条件中使用变量

很多情况下,需要根据用户变量或者上一个取样器的返回值来进行条件判断,觉得是否需要执行某一个的取样器。

如下,新增一个用户变量:ischildren。条件:ischildren 的值为 y 的时候,才执行 访问百度首页 的取样器。

或者可以用表达式:${__jexl3("${ischildren}"=="y",)}。

四、Evaluate for all children? 的用法

在 上面了解了条件中如何使用变量,那么如果 if 控制器下的取样器执行后,改变了该变量的值,if 控制器下 其后的取样器还会被执行吗?看看下面的列子:

if 控制器下  有 3 个取样器,变量 ischildren 的初始值为 y,if 控制器的条件为:${__jexl3("${ischildren}"=="y",)}。

开始满足条件,那么应该执行 访问百度首页 、访问百度新闻页、访问百度贴吧 3个取样器,

但是 访问百度新闻页 执行后,将ischildren 的值变了 n,已经不能满足 "${ischildren}"=="y" 条件。

所以 访问百度贴吧 这个取样器不会被执行。

如果这个时候,去掉  Evaluate for all children? 的勾选,会发生什么呢,大家可以自己动手试试。

补充:

条件有:

==  等于,如 1==1 或 ${__jexl3(1==1,)}

> 、< 大于 小于,如 2>1,1<2,或 ${__jexl3(2>1,)}

>=、<= 大于等于  小于等于,如 2>=1 ,或 ${__jexl3(2>=1,)}

!=、!不等于,非,如 "y"!="n",非 则取 != 的反值

多条件可用:|| 或,&& 和,如:2<5 && 2>1,${__jexl3(2<5 && 2>1,)}

另外,如果时字符串必须要用引号,变量都认为时字符串的形式,如:${__jexl3("${ischildren}"=="y",)}

今天分享到这里啦,大家多多指点,测试任务来了,又要干活了。

Jmeter 之 逻辑控制器 if 控制器的更多相关文章

  1. Jmeter之逻辑控制器(Logic Controller)

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

  2. Jmeter之逻辑控制器(Logic Controller)【转】

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

  3. (四)Jmeter之逻辑控制器(Logic Controller)

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

  4. 如何在JMeter中使用ForEach控制器

    Jmeter中的ForEach Controller遍历变量数组. 在这个JMeter教程中,我们将使用ForEach控制器循环访问JSON数组. 有时我们需要解析响应并提取某些信息.例如,在测试AP ...

  5. Jmeter之逻辑控制器/定时器

    Jmeter逻辑控制器 更新中 线程组->添加->逻辑控制器->XX控制器 1.仅一次控制器 使用场景:线程数为1,登录1次,循环浏览N次. 如果,登录账号参数化,线程数为M时,登录 ...

  6. Jmeter 常见逻辑控制器详解

    简介 Jmeter有很多逻辑控制器,可以控制请求的执行顺序和执行逻辑,本文就Jmeter常见的逻辑控制器做一个详细的描述,并通过示例让大家了解逻辑控制器的作用.   代码的逻辑分支通常有: 条件判断I ...

  7. 【JMeter_11】JMeter逻辑控制器__Switch控制器<Switch Controller>

    Switch控制器<Switch Controller> 业务逻辑: 取得switch value的值,通过对节点下所有取样器.逻辑控制器的下标.名称匹配去执行,switch value的 ...

  8. 【JMeter_08】JMeter逻辑控制器__While控制器<While Controller>

    While控制器<While Controller> 业务逻辑: 当条件为非false时,执行该节点下的脚本内容,判断条件包括数字.null.空白.字母.符号.true. 当条件为fals ...

  9. 【JMeter_10】JMeter逻辑控制器__ForEach控制器<ForEach Controller>

    ForEach控制器<ForEach Controller> 业务逻辑: ForEach控制器一般与用户自定义变量/JDBC结果变量一起使用,可以认为他就是一种遍历型循环,该节点下的脚本内 ...

随机推荐

  1. window下打jar包

    比如我的项目在 F/Myjar F:\Myjar>ll'll' 不是内部或外部命令,也不是可运行的程序或批处理文件. F:\Myjar>cd mian系统找不到指定的路径. F:\Myja ...

  2. webgl核心要素

    WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,提供硬件3D加速渲染, ...

  3. js 数组对象深拷贝

    js 数组对象深拷贝 结论:对象的拷贝不能采用直接赋值的方式. 背景 踩过的坑如下: formData本来是父组件传过来的,但是我不想直接用,于是我直接赋值给一个formDataCopy的对象. 但是 ...

  4. kafka消息的处理机制(五)

    这一篇我们不在是探讨kafka的使用,前面几篇基本讲解了工作中的使用方式,基本api的使用还需要更深入的去钻研,多使用才会有提高.今天主要是探讨一下kafka的消息复制以及消息处理机制. 1. bro ...

  5. Linux常用命令之权限管理

    在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录,这也让linux更安全.下面主要讲解下常用的权限命令chgrp,chmod,chown . 1.文 ...

  6. ES 27 - Elasticsearch脚本的使用实践

    目录 1 关于脚本 2 脚本使用的最佳实践 2.1 创建脚本并存储 2.2 脚本的缓存 2.3 Script Field - 脚本字段 本文以 ES 6.6.0 版本为例进行演示. 1 关于脚本 ES ...

  7. 基于Visual C#的AutoCAD开发——一些网址

    https://blog.csdn.net/xwebsite/article/details/5578446 http://www.cadgj.com/?p=1504

  8. RuntimeError: one of the variables needed for gradient computation has been modified by an inplace

    vgg里面的 ReLU默认的参数inplace=True 当我们调用vgg结构的时候注意 要将inplace改成 False 不然会报错 RuntimeError: one of the variab ...

  9. Go-json解码到结构体-踩坑

    package main import ( "encoding/json" "fmt" ) type User struct { Name string `js ...

  10. LoRaWAN Server开源项目部署

    1,安装MQTT broker,Redis,PostgreSQL sudo apt install mosquitto mosquitto-clients redis-server redis-too ...