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次,最后一条数据会运行第一条数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下