JMeter:循环控制器While Controller的用法小结

前言

在之前的博文“JMeter案例优化:测试执行结束后,实现tearDown的几种方式”中,尝试了JMeter的循环控制器While Controller,发现还有点小复杂,将学习过程记录下来,免得遗忘。

注:我使用的是JMeter 5.5

添加While Controller

右击需要添加While Controller的线程组,选择Add->Logic Controller->While Controller

添加成功后,界面如下:

最重要的,就是Condition这个文本框了,循环条件。

循环条件

While Controller的循环条件有三种可能值:空,LAST和表达式,下面将一一举例说明。

1、空:

条件为空时,本循环体中最后一个采样器执行失败时退出。

1.1 循环体内最后一个采样器执行失败的情形

1.1.1 While Controller中添加两个Dummy Sampler,分别命名为11和22
1.1.2 改写22的Response Data,响应中的result字段为1-10的随机数
{"result": "${__Random(1,10,)}"}

1.1.3 22添加JSON Assertion:result <= 7。则当result>7时,断言失败,构造出本采样器失败的情形。
^[0-7]?$

 1.1.4 循环提外添加一个Dummy Sampler,当循环结束后,执行本采样器。

构造完毕,执行一次:

当采样器22的响应为8时,断言失败,循环体内最后一个采样器的执行结果为fail,满足循环结束条件,循环结束。

1.2 循环体内非最后一个采样器执行失败的情形(第一个采样器失败)

 将上例中的11 和 22调换位置,22作为循环体内的第一个采样器,重新执行

可以看到,虽然22已经断言失败了,但是循环继续。因为循环条件仅判断循环体内最后一个采样器的结果。

2、LAST

值为LAST时,有两个条件

1、循环进入条件:若循环体前面的最后一个采样器失败,不进入循环。

2、循环退出条件:当循环体内的最后一个采样器失败时退出;

第2条,与表达式为空时一样。所以我们着重看第一个条件。

2.1 循环体前面的最后一个采样器成功,进入循环

我们将之前的While Controller复制一份,稍加改造

2.1.1 while Controller表达式改为LAST

2.1.2 循环体内仍然是最后一个采样器可能出现失败的情况

2.1.3 循环外的采样器放到循环体前面去,以便构造循环体前面的最后一个采样器成功的情形
2.1.4 循环外的采样器Response Data 修改为
{"result": true}

2.1.5 循环外的采样器添加JSON Assertion:

这样,这个采样器将断言成功,

执行一下

可见,因循环体前面的最后一个采样器执行成功,成功进入循环;

并在循环体内的最后一个采样器执行失败时,退出循环。

2.2 循环体前面的最后一个采样器失败,不进入循环

修改循环外的采样器的Response Data为:

{"result": false}

这样断言将失败,不会进入循环:

3、循环条件为变量、属性或函数,将一直循环,直到循环条件变成false

3.1 变量、属性

 以变量为例,同样,将前面的While Controller复制一份,稍加改造

3.1.1 11的Response Data 修改为
{"result": false}
 3.1.2 11添加JSON Extractor

 3.1.2 While Controller的Condition修改为${result}

执行结果:

1、进入循环,顺序执行11和22采样器

2、再次判断:11采样器的响应result为false,即所获取的变量${result}为false,满足循环退出条件,于是循环结束,没有执行第二轮。

3.2 函数

可以是__jexl3或__groovy函数。当函数的结果为false是,结束循环

比如JMeter案例优化:测试执行结束后,实现tearDown的几种方式中的例子:

${__jexl3(${__time(,)}-${__P(TESTSTART.MS,)}<=10000)}

当执行时间<=10秒时为true,继续循环;

当执行时间>10秒时为false,结束循环 。

Tip:循环次数:

JMeter提供了一个变量__jm__<Name of your element>__idx来统计循环次数,比如下图,循环控制器组件的名称是While Controller-var,便可以通过${__jm__While Controller-var__idx}来获取循环次数

从0开始计数:

不过这个变量作用域仅限于循环体内,出了循环体就不能用了。目前还没想到什么应用场景。

附:__jexl3常用语法总结

${__jexl3(${__Random(0,50,)}==0,)} //数字等于

${__jexl3(${__Random(0,50,)}!=0,)} //数字不等于

${__jexl3("${var}".equals("qwe"),)} //字符串相等

${__jexl3("${var}" eq "qwe",)}

${__jexl3("${var}" == "qwe",)}

${__jexl3(!"${var}".equals("q1we"),)} //字符串不相等

${__jexl3("${var}" ne "qwe1",)}

${__jexl3("${var}" != "qwe",)}

${__jexl3("${var}}".contains("pre"),)} //字符串包含

${__jexl3(!"${var}".contains("pre"),)} //字符串不包含

${__jexl3("${var}".size() < 3,)} //字符串长度,可以用size()或者length(),效果一样

${__jexl3("${var}".size() > 3,)}

${__jexl3("${var}".size() == 3,)}

${__jexl3("${var}".empty(),re)} //字符串为空

${__jexl3(${__Random(0,50,)}==0 || "${var}".contains("pre"),)} //组合条件zhozho

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41644.shtml

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

相关文章

《C++20设计模式》外观模式

文章目录 一、前言二、实现1、UML类图2、实现 一、前言 一句话总结外观模式&#xff1a;简化接口&#xff0c;或者简化流程。&#x1f642; 相关代码可以在这里&#xff0c;如有帮助给个star&#xff01;AidenYuanDev/design_patterns_in_modern_Cpp_20 二、实现 原来需要很…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54~55循环神经网络的从零开始实现和简洁实现

54循环神经网络的从零开始实现 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 读取H.G.Wells的时光机器数据集 batch_size, num_steps 32, …

多特征线性回归

目录 一、多特征符号意义说明&#xff1a;二、多特征模型表示&#xff1a;三、Numpy向量表示、内积计算&#xff1a;1.向量表示&#xff1a;2.内积计算&#xff1a; 四、多元线性回归梯度下降算法&#xff1a; 一、多特征符号意义说明&#xff1a; x下标j&#xff1a;表示第j个…

怎么做外贸推广:10个详细教程和工具

1. 介绍 1.1 什么是外贸推广 外贸推广指的是将产品或服务推广到国际市场的过程。它的主要目的是吸引海外客户&#xff0c;增加销售额&#xff0c;并扩大企业的全球影响力。外贸推广不仅仅是销售产品&#xff0c;它还包括品牌建设、市场研究和客户关系管理。 谷歌外贸推广案例…

机器学习---线性回归

1、线性回归 例如&#xff1a;对于一个房子的价格&#xff0c;其影响因素有很多&#xff0c;例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi​表示&#xff0c;那么房价 y y y可以用如下公式表示&#xff1a; y …

吴恩达机器学习 第三课 week3 强化学习(月球着陆器自动着陆)

目录 01 学习目标 02 概念 2.1 强化学习 2.2 深度Q学习&#xff08;Deep Q-Learning &#xff09; 03 问题描述 04 算法中的概念及原理 05 月球着陆器自动着陆的算法实现 06 拓展&#xff1a;基于pytorch实现月球着陆器着陆 07 总结 写在最前&#xff1a;关于强化学习…

python conda查看源,修改源

查看源 conda config --show-sources 修改源 可以直接vim .condarc修改源&#xff0c;

平价猫粮新选择!福派斯鲜肉猫粮,让猫咪享受美味大餐!

福派斯鲜肉猫粮&#xff0c;作为一款备受铲屎官们青睐的猫粮品牌&#xff0c;凭借其卓越的品质和高性价比&#xff0c;为众多猫主带来了健康与美味的双重享受。接下来&#xff0c;我们将从多个维度对这款猫粮进行解析&#xff0c;让各位铲屎官更加全面地了解它的魅力所在。 1️…

【三】ubuntu24虚拟机集群配置免密登陆

文章目录 环境背景1. 配置域名映射2. 配置免密登录2.1 在每台机器上生成SSH密钥对&#xff1a;2.2 将公钥分发到其他机器&#xff1a;2.2.1 报错问题2.2.2 修复方法 3. 验证免密登录在 ubuntu1 上&#xff1a;在 ubuntu2 上&#xff1a;在 ubuntu3 上&#xff1a; 测试连接 环境…

Linux系统的服务——以Centos7为例

一、Linux系统的服务简介 服务是向外部提供对应功能的进程&#xff0c;其运行在系统后台&#xff0c;能够7*24小时持续不断的提供外界随时发来的服务请求&#xff0c;且服务进程常驻在内存中&#xff0c;具有固定的端口号&#xff0c;通过端口号就能找到服务内容。 提供服务的一…

【PB案例学习笔记】-27制作一个控制任务栏显示与隐藏的小程序

写在前面 这是PB案例学习笔记系列文章的第27篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

C语言结构体的相关知识

前言 从0开始记录我的学习历程&#xff0c;我会尽我所能&#xff0c;写出最最大白话的文章&#xff0c;希望能够帮到你&#xff0c;谢谢。 1.结构体类型的概念及定义 1.1、概念&#xff1a; 结构体是一种构造类型的数据结构&#xff0c; 是一种或多种基本类型或构造类型的数…

第11章 规划过程组(二)(11.8排列活动顺序)

第11章 规划过程组&#xff08;二&#xff09;11.8排列活动顺序&#xff0c;在第三版教材第390~391页&#xff1b; 文字图片音频方式 第一个知识点&#xff1a;主要工具与技术&#xff08;重要知识点&#xff09; 1、箭线图法(ADM) &#xff08;双代号网络图或活动箭线图&am…

windows USB 设备驱动开发- 不同模型下的控制传输

在不同的模型下&#xff0c;USB控制传输会有不同的特点&#xff0c;但是任何控制传输的目标都始终是默认端点。 接收者是设备的实体&#xff0c;其信息&#xff08;描述符、状态等&#xff09;是主机感兴趣的。请求可进一步分为&#xff1a;配置请求、功能请求和状态请求。 发…

leetcode力扣_双指针问题

141. 环形链表 思路&#xff1a;判断链表中是否有环是经典的算法问题之一。常见的解决方案有多种&#xff0c;其中最经典、有效的一种方法是使用 快慢指针&#xff08;Floyd’s Cycle-Finding Algorithm&#xff09;。 初始化两个指针&#xff1a;一个快指针&#xff08;fast&…

uni-app 使用Pinia进行全局状态管理并持久化数据

1.引言 最近在学习移动端的开发&#xff0c;使用uni-app前端应用框架&#xff0c;通过学习B站的视频以及找了一个开发模板&#xff0c;终于是有了一些心得体会。 B站视频1&#xff1a;Day1-01-uni-app小兔鲜儿导学视频_哔哩哔哩_bilibili B站视频2&#xff1a;01-课程和uni的…

[FFmpeg] windows下安装带gpu加速的ffmpeg

1.显卡能力排查 目前只有 NIVIDIA 支持 ffmpeg 的 gpu加速(AMD貌似也陆续开始支持)。 在下述网站中查找自己的显卡能够支持的编解码格式。https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-newhttps://developer.nvidia.com/video-encode-and-decod…

Vue88-Vuex中的mapActions、mapMutations

一、mapMutations的调用 此时结果不对&#xff0c;因为&#xff1a;若是点击事件不传值&#xff0c;默认传的是event&#xff01;&#xff0c;所以&#xff0c;修改如下&#xff1a; 解决方式1&#xff1a; 解决方式2&#xff1a; 不推荐&#xff0c;写法麻烦&#xff01; 1-…

【Unity数据交互】二进制私

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 专栏交流&#x1f9e7;&…

电脑硬盘分区的基本步骤(2个实用的硬盘分区方法)

在现代计算机中&#xff0c;硬盘分区是非常重要的一步。无论是新硬盘的初始化&#xff0c;还是重新组织现有硬盘&#xff0c;分区都是必不可少的操作。本文将详细介绍电脑硬盘分区的基本步骤&#xff0c;帮助您更好地管理和利用硬盘空间。 文章开始&#xff0c;我们先简单说一…