JMeter逻辑控制器

JMeter逻辑控制器中,对于用来控制Test Plan执行过程中节点的逻辑执行顺序的Logic Controller:

  • ForEach Controller
  • If Controller
  • Interleave Controller(交替控制器)
  • Loop Controller(循环控制器)
  • Once Only Controller(仅一次控制器)
  • Random Controller(随机控制器)
  • Random Order Controller(随机顺序控制器)
  • Switch Controller
  • While Controller
    在这里插入图片描述

1.ForEach Controller

参考:https://www.jianshu.com/p/113b3b2b48ec

2.If Controller(如果控制器)

一般用于设置多业务混合场景各业务所占并发比例,请求随机执行,如果需要顺序执行的话,用后面的Interleave Controller(交替控制器)。
jmeter的函数对话框中${__counter(True,)}函数获取当前迭代的次数。
如果将登陆:查询:退出比例设置为1:3:1,可以这样设置IF控制器:
登陆:${__counter(true,)}%5<=1
查询:${__counter(true,)}%5<=4&&${__counter(true,)}%5>=1
退出:${__counter(true,)}%5>4
在这里插入图片描述

3.Interleave Controller(交替控制器)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数配置:默认不勾选以下2项

参数名称含义
Ignore sub-controller blocks忽略子控制器。选中此项,则Interleave Controller将其下的子Controller当成单一元素处理,仅允许每个子Controller一次发出一个请求
Interleave across threads跨线程交替。选中此项,则交替控制器下的请求将应用至所有线程和循环中迭代

4.Loop Controller(循环控制器)

为其下的子节点运行指定循环次数,达到次数则运行完成

案例:线程组中有2个线程,Loop Controller控制循环次数为2,则预期每次循环2个线程,一共执行4个请求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.Once Only Controller(仅一次控制器)

适用场景:不管线程组中设置循环多少次,让Test Plan中的某些功能对每个线程仅执行一次(如:每个线程仅需要执行一次“登录”操作)

线程1,第1次循环,执行1次登录
线程1,第2次循环,不重复执行登录
线程2,第1次循环,执行1次登录
线程1,第3次循环,不重复执行登录
线程2,第2次循环,不重复执行登录
......

在这里插入图片描述
在这里插入图片描述

6.Random Controller(随机控制器)

每次执行时,从其子节点中随机选取一个来执行
在这里插入图片描述
在这里插入图片描述

7.Random Order Controller(随机顺序控制器)

每次执行时,按照随机产生的顺序执行其下的所有子节点

Random ControllerRandom Order Controller
随机一个:只选择执行其所有子节点中的一个随机全部:按照随机顺序全部执行其下的所有子节点

在这里插入图片描述

8.Switch Controller

类似程序语言中的switch函数,Switch Controller根据给定的值n(可使用参数)选择执行其下的第n+1个子节点
Switch Controller只接受整数值,并且给定的值n是以0为基础的,因此当给定的值为2时,意味着Switch Controller下的第3个子节点会被执行;同时,Switch Controller接受参数作为其值
案例:在Switch Controller下只有3个子节点

Switch Value取值执行的节点
n=-1NULL(不执行任何节点)
n=0节点1
n=1节点2
n=2节点3
n=3节点1(n+1=4>节点总数3,默认执行节点1
n=4节点1

9.While Controller

While Controller是另一个用于控制循环的Controller,可设置一个Condition,其中Condition的取值可从以下三者之一取得:
在这里插入图片描述


  1. 如果Condition取值为空,则该Condition迭代执行While Controller下的所有子节点,直到最后一个子节点失败为止;如果不是最后一个子节点失败,而是While Controller中的其他子节点失败,则While Controller不会停止,而会继续循环执行过程

构造使得非最后一个子节点的其他子节点失败,While Controller确实没有停止
在这里插入图片描述
遇到最后一个子节点失败,While Controller就会停止执行
在这里插入图片描述

  1. LAST
    如果While Condition取值为字符串LAST,则迭代执行其下的所有子节点,直到最后一个子节点返回失败为止(与While Controller为空时的行为相同);同时,若While Controller的上一个节点失败,则Test Plan在执行时不会进入While Controller

上一个节点失败,不会进入执行While Controller
在这里插入图片描述
在这里插入图片描述

  1. 表达式
    除了为空、LAST之外,While Controller还可以取一个表达式。当While Controller取值为表达式时,若表达式的取值为字符串FALSE,While Controller就退出循环。

以下列出几个可用的表达式:
${VAR}:当参数VAR的值被设置成false时则退出循环
KaTeX parse error: Expected group after '_' at position 2: {_̲_javascript("{VAR}" == “test001”)}:当参数VAR的值不等于test001时会退出循环

参考:https://www.jianshu.com/p/4756d9409d4e

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值