Jmeter常用逻辑控制器及csv参数化

1、简单控制器

作用:用来组合取样器和其他逻辑控制器,可理解为分组分步依次执行

创建简单控制器,路径:线程组-->添加-->逻辑控制器-->简单控制器

 

 

添加完控制器之后,可在控制器中加入取样器之HTTP请求

 

 

 

行简单控制器,运行后可看到,添加的每个HTTP请求从上至下依次运行

 

 

 

 拓展:

线程数1,循环1,运行后每个请求运行1次;

线程数2,循环1,运行后每个请求运行2次,在运行下一个请求;

线程数1,循环2,运行后每个请求运行一次后,进行下一个循环运行,循环2次;

 

 

 

 

2.随机控制器

在该控制器下所有请求中随机选择一个请求进行运行

 

新建随机控制器,路径:线程组-->添加-->逻辑控制器-->随机控制器

 

 

 

在控制器下添加几个HTTP请求,并运行,运行结果:是随机读取某一个执行的,并不是全部执行。

如下图:

 

 

 

若随机控制器下包含了其他控制器,未勾选【忽略子控制器块】如果随机到了控制器,就会执行整个控制器

 

 

 

 

3.随机顺序控制器

该控制器下的子节点全部执行,但顺序是随机的。

新建随机顺序控制器,路径:线程组-->添加-->逻辑控制器-->随机顺序控制器

 

 

 

 

 

 

4.仅一次控制器

在多线程循环的时候,将使其子节点下的取样器请求只运行一次(当仅线程组为1的情况下生效,不管循环次数设置为多少,都只执行一次),只对次数做限制,不对线程组做限制

 

 

线程组为1,循环次数为5,执行1次

 

 

 

 

 

 

 线程组为5,循环次数为5,执行5次

 

 

 

 

 

 

 5.switch控制器

通过给该控制器中的value赋值,来指定运行哪个取样器

有两种赋值方式:

第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。

第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

当Value为空时,默认执行第1个子节点元素。 

 

 

 设置直接指定子元素的名称,比如采样器的Name来进行匹配

 

 

 运行结果

 

 

 

value为空

 

 

 运行结果(默认默认执行switch控制器下的第一个请求)

 

 

 

switch value 为1,执行switch控制器下的第2个请求(因为从0开始计数)

 

 

 

 

 

 switch value 为8,执行switch控制器下的第1个请求(因为从0开始计数,超出范围,默认执行第一个)

 

 

 

 

 

 

6.ForEach控制器

ForEach Controller需要配合‘用户定义的变量’来使用,作用是参数化

 

添加用户自定义变量

 

 

 

 

 

 

添加ForEach控制器

 

 

 

输入变量前缀:变量的前缀;如要使用的变量为name1,则需要填name。

开始循环字段(不包含):从X-1号的变量开始,X为第几个变量;如填0,实际从第一个开始。

结束循环字段(含):到X+1的变量结束,X为第几个变量;如填4,实际第4个不会被使用,只会到第3个。

输出变量名称:将要用来使用的变量名

数字之前加上”_”:用户定义的变量有没有下划线分隔编号,可加可不加,若加了,在用户定义的变量中也需要加上”_”变为”name_1”;

 

添加取值器需注意,路径最后的取值要加上${vname}

 

 

 

运行结果如下图

 

 

 

 7.runtime控制器

用于控制该控制器下的取样器/控制器的运行时间

添加runtime控制器

 

 

 

 

 

 

 

 

 

 

8.If控制器

根据判断条件决定是否执行该控制器内的请求,如果是字符串比较条件,参数和字符串 都需要加引号

添加if控制器

 

 

 

 

 

 使用函数助手添加IF条件,路径:Tools--->函数助手对话框

 

 

 通过【选择一个功能】找到要使用的函数,然后在【表达式评估】中写入需要使用的等式,点击【生成】即可得到一个完整的表达式(可借助__groovy这两个函数)

例如在函数助手中生成istrue==1的表达式

 

 

 将生成的表达式拷贝,贴到if控制器的expression的输入框中

 

将公式中的值要设置为变量,需要用到取样器,将取样器放在if控制器前面

 

 

 

 

 

 添加脚本vars.put("istrue","1");----将istrue变量设置为1

ars即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法:

  • vars.get(String key):从jmeter中获得变量值;
  • vars.put(String key,String value):数据存到jmeter变量中;

 

 

 添加好取样器后,if控制器中的语句因为是字符串比较,所以要加上引号,要调整为${__groovy("${istrue}"=="1",)}

 

 

 

运行

 

 

 

9.While控制器

Condition (function or variable) :条件(函数或变量)。条件为 Flase 的时候,才会跳出 While 循环,否则一直执行 While 控制器下的样例。

空白:最后一个示例循环失败时退出循环

最后一个值:最后一个示例循环失败时退出循环。 如果之前的最后一个示例只是循环失败,不进入循环。

否则:退出时(或不输入)循环条件等于字符串“ 假 

 

 

 第一个请求执行失败,运行结果:第一个请求执行失败,后续请求继续执行且一直循环执行

 

 

最后一个请求执行失败,运行结果:最后一个请求执行失败,后续请求不再循环执行,直接跳出

 

 

 while条件值为LAST

 

 

While 控制器下最后一个取样器执行失败, 跳出循环

 

 

While控制器前一个样例执行失败,就不会进入While循环进行执行下面的子节点

 

 

 

11、CSV 数据文件设置

本地新建csv文件

 

 

 添加一个CSV 数据文件

 

 

 

 

导入到CSV 数据文件设置

 

 

设置CSV 数据文件设置

用notepad++打开csv文件,将首行拷贝出来

 

 

 

 设置“通过学生姓名查询(参数化)”表,字段参数化使用${},将参数名填入,路径处请注意:${path}${name} 之间可以不加/

 

 

设置循环次数为5,运行  4条数据,循环5次,最后一条数据会运行第一条数据。

 

 

 

posted on   夏梓墨  阅读(257)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示