浅学Jmeter的几个常用的逻辑控制器使用
1、简单控制器
作用:用来组合取样器和其他逻辑控制器
1.1 创建简单控制器,路径:线程组-->添加-->逻辑控制器-->简单控制器
1.2 添加完控制器之后,可在控制器中加入取样器之HTTP请求,添加的请求之间不会有相互影响
1.3 运行简单控制器,运行后可看到,添加的每个HTTP请求从上至下依次运行
2、随机控制器
作用:顾名思义就是在该控制器下的HTTP请求之中随机选择一个HTTP请求进行运行
2.1 创建随机控制器,路径:线程组-->添加-->逻辑控制器-->随机控制器
2.2 在控制器下添加几个HTTP请求,并运行,运行结果:控制器下的所有HTTP请求均运行,但顺序不是自上而下,而是随机的
2.3 随机控制器下包含了其他控制器,未勾选【忽略子控制器块】,如果随机到了控制器,就会执行整个控制器
2.4 随机控制器下包含了其他控制器,勾选【忽略子控制器块】,如果随机到了控制器,只会执行子控制器下的一个请求
3、随机顺序控制器
作用:类似于简单控制器,将执行每个子节点下的取样器请求一次,但是执行是随机的
3.1创建随机控制器,路径:线程组-->添加-->逻辑控制器-->随机控制器
3.2在控制器下添加几个HTTP请求,并运行,运行结果:只运行了其中某一个请求
4、仅一次控制器
作用:在多线程循环的时候,将使其子节点下的取样器请求只运行一次
4.1创建仅一次控制器,路径:线程组-->添加-->逻辑控制器-->仅一次控制器
4.2在控制器下添加几个HTTP请求,并运行
4.2.1 线程数1,循环1:控制器下的每个请求均只运行一次
4.2.2 线程数5,循环1:控制器下的每个请求执行5次
4.2.3 线程数1,循环5 :控制器下的每个请求均只运行一次
5、循环控制器
作用:该控制器下的取样器请求可以循环运行
5.1创建循环控制器,路径:线程组-->添加-->逻辑控制器-->循环控制器
线程组设置为1,循环次数为1
5.2 设置循环控制器的循环次数为3
循环次数(Loop Count):在输入框中输入需要循环的次数,控制器下的请求即可循环运行
永远(forever):如果勾选该项,那么控制器下的请求可一直运行
5.3在控制器下添加几个HTTP请求,并运行,运行结果:将http请求按照顺序执行三次,每次执行一遍(一个并发)
6、Switch控制器
作用:Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:
- 第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。
- 第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。
- 当Value为空时,默认执行第1个子节点元素。
6.1创建Switch控制器,路径:线程组-->添加-->逻辑控制器-->Switch控制器
6.2在控制器下添加几个HTTP请求,并运行
6.2.1 switch value 为空,默认执行switch控制器下的第一个请求
6.2.2 switch value 为2,执行switch控制器下的第3个请求(因为从0开始计数)
6.2.3 switch value 为6,执行switch控制器下的第1个请求(因为从0开始计数,超出范围,默认执行第一个)
6.2.4 switch value 为demo_switch_02,执行switch控制器下取样器名为”demo_switch_02“的请求
7、ForEach控制器
作用:ForEach控制器一般和用户自定义变量一起使用。其在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。
参数:
- Input Variable Prefix:输入变量前缀----就是定义用户变量的名称
- Output variable name:输出变量名称----作用于接口取值
- Start index for loop(exclusive):循环开始的索引(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)---从X序号的变量开始
- End index for loop(inclusive):循环结束的索引(超出设置的变量索引时,仅执行到设置变量的索引,后续不再执行)
- Add”_”before number:输入变量名称中是否使用“_”进行间隔。
7.1创建ForEach控制器,路径:线程组-->添加-->逻辑控制器-->ForEach控制器
7.2 添加用户自定义变量作为接口的入参,路径为:线程组-->添加-->配置元件-->用户自定义变量
7.3 设置控制器的各项参数,并更改取样器的路径为变量形式:${baby}
7.4 运行结果:将设置的用户变量依次带入请求,三个用户变量代入请求三次
8、While控制器
作用:运行其子节点下的取样器/控制器,直到条件为“假”
Condition(function or variable):条件(函数或变量):里面可填入判断依据的条件,参照使用方法,可能的条件值有:
①.空白:最后一个示例循环失败时退出循环
②.最后一个值:最后一个示例循环失败时退出循环。 如果之前的最后一个示例只是循环失败,不进入循环。
③.否则:退出时(或不输入)循环条件等于字符串“ 假 ”
8.1创建While控制器,路径:线程组-->添加-->逻辑控制器-->While控制器
8.2 不填写while条件值
·
8.2.1 第一个请求执行失败,运行结果:第一个请求执行失败,后续请求继续执行且循环执行未断成
8.2.2 中间的请求执行失败,运行结果:中间的请求执行失败,后续请求继续执行且循环执行未断成
· 8.2.3 最后一个请求执行失败,运行结果:最后一个请求执行失败,后续请求不再循环执行
8.3 while条件值为LAST
8.3.1 While 控制器下最后一个取样器执行失败, 跳出循环
8.3.2 While控制器前一个样例执行失败,就不会进入While循环进行执行下面的子节点
9、Runtime控制器
作用:控制运行一次runtime控制器下所有取样器的时间
9.1创建Runtime控制器,设置时间6秒,路径:线程组-->添加-->逻辑控制器-->Runtime控制器
9.2在控制器下添加几个HTTP请求,并运行,运行结果:
10、如果(If)控制器
作用:根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断。
参数:
- 条件(默认JavaScript)(Expression):使用JavaScript的函数或变量进行评估判断条件为真或假
- 条件解释为变量表达式(interpret condition as variable expression):如果勾选该项,那么将expression中的变量表达式进行求值,并与“ture”或“false”进行比较,而无需使用JavaScript-----如_groovy函数
- 对所有子条件执行(evaluate for all children):如果勾选该项,则该控制器在每一个子节点执行前执行一次表达式判断;
- 默认情况下,该控制器可以对包含在其下面的所有可运行的元素进行执行,但只在入口执行一次
10.1创建Runtime控制器,路径:线程组-->添加-->逻辑控制器-->Runtime控制器
10.2使用函数助手添加IF条件,路径:Tools--->函数助手对话框
通过【选择一个功能】找到要使用的函数,然后在【表达式评估】中写入需要使用的等式,点击【生成】即可得到一个完整的表达式
10.3 将函数助手生成的表达式复制粘贴到如果(If)控制器,因为是字符串比较,所以将表达式调整为${__groovy("${istrue}"=="1",)}
10.4 添加BeanShell 取样器,添加脚本vars.put("istrue","1");----将istrue变量设置为1
vars即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法:
- vars.get(String key):从jmeter中获得变量值;
- vars.put(String key,String value):数据存到jmeter变量中;
10.5 添加一个HTTP请求,运行结果,执行if控制器下的HTTP请求
10.6 将BeanShell取样器中的值改为2(即不满足控制器条件),再次运行,运行结果:不执行if控制器下的HTTP请求
11、CSV 数据文件设置
11.1 添加一个CSV 数据文件,路径为:线程组-->添加-->配置元件-->CSV 数据文件设置
11.2 新建一个TXT文件,改名为 basedata.csv,打开后添加字段及接口相关数据,选择使用姓名查询学生接口,明确接口入参为姓名【name】
11.3 CSV 数据文件设置:
1.通过【文件名】右边的【浏览】键导入之前建好的 basedata.csv文件
2.文件编码选择:编辑
3.变量名称为basedata.csv文件中的各变量值
4.忽略首行选择:True
11.4 添加HTTP请求,将请求参数均使用参数化${xxx},将参数名依次填入
11.5 在线程组中设置循环次数为6,运行结果:basedata.csv文件中仅有4条数据,成功循环6次,第1、2条数据重复
本文来自博客园,作者:要真努力呀,转载请注明原文链接:https://www.cnblogs.com/siyuebb/p/16051846.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧