Jmeter-几种常用的逻辑控制器
11、 Jmeter 逻辑控制器
概念: Jmeter逻辑控制器是可以控制采样器(Sampler)的执行顺序,它由多个逻辑控制语句封装成不同功能的组件组成
作用域:
只对其子节点的sampler有效
11.1 如果(If)控制器
作用: 条件成真,则执行控制器下所有取样器
if控制器参数配置图
- 条件:"${foruser}"==“李四”
- 表达式:
- 注意:
- 引用变量格式${name}需要被双引号括起来
- 两个等号
- 值需要被双引号括起来
Expression(must evaluate true or false)输入框,此处需写入要进行判断的表达式,从must evaluate true or false可知,实际使用时,只能填入true或者false这样的值,因此我们需要借助其他模块或者函数将需要进行判断的表达式 “${foruser}” == “李四” 转换成true或false,判断才能生效,直接写入Expression中是无效的。
可以借助__jexl3或者__groovy函数来计算表达式的值。
察看结果树: 满足条件才执行if逻辑器下的请求
11.2 ForEach控制器
作用: ForEach控制器一般和用户定义的变量一起使用,在用户自定义变量中读取一系列相关的变量;
操作步骤:
1.测试计划->线程组
2.线程组->用户定义的变量
3.线程组->ForEach控制器
4.ForEach控制器->HTTP请求
5.测试计划->察看结果树
重点解析:
1. ForEach控制器参数设置
- 输入前缀变量:输入要遍历变量前缀
- Start index for loop(exclusive):遍历变量开始的索引(从0开始算,不包括开始索引))
- End index for loop(inclusive):遍历变量结束的索引(包括结束索引)
- 输出变量名称:定义要被引用的变量名称
2. 用户定义的变量书写格式 (前缀+_+数字)
11.3 循环控制器
作用: 指定循环控制器内取样器的执行次数
11.4 事务控制器
释义: 事务控制器会生成一个额外的采样器来测量其下测试元素的总体时间。
示例图:
11.5 Switch控制器
作用: Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。
两种赋值方式:
第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素
第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。
当Value为空时,默认执行第1个子节点元素
示例图:
11.6 While控制器
作用:
运行其子节点下的取样器/控制器,直到条件为“假”
解析:
Controller的条件的三种情况:
(Condition) 为空 :直到最后一个sample请求失败,才会退出循环
(Condition) 为 LAST :
如果while controller的上一个节点运行失败,则不再执行while controller;否则继续执行,与参数为空的情况一致
(Condition) 为 其他 :条件值等同于字符串"false"(等同于输入框中输入false)时,退出循环。
需要经过__jexl3函数进行转换,可以使用函数助手生成表达式)