Jmeter之控制线程执行到某个结果时退出执行

目的

今天做压力测试时,涉及到一个场景,需要先执行A场景,在执行到status=2时,在执行B场景,然后停止运行。

遇到的困难

status开始为1,需要一段时间后变为2,且不确定需要等待多久才会变为2。

最初想到的是,通过“Runtime Controller”+“如果(if)控制器”控制HTTP请求执行一段时间,当status=2时,执行if控制器的HTTP请求。但是Runtime Controller中时间写长了后就算执行了if控制器里的HTTP请求,Runtime Controller下的HTTP请求也一直运行到runtime设置的时间结束,会造成多余的HTTP请求执行,占用资源。

解决方法

通过查看jmeter的逻辑控制器,发现While Controller(While Controller官网地址)适合用于控制,当到达指定条件时,会自动停止运行。

使用说明

条件可以是任何变量或函数,最终等于字符串” 假 ”。需要注意的是:条件是评估两次,一次取样前,一次随机取样!

案例实现

在Runtime Controller下一直运行A HTTP请求,直到status=2,执行While Controller下的B HTTP请求且执行一次,然后退出循环,如下:

这里写图片描述

这里写图片描述

(1)当While Controller的条件为false时,While Controller下的sampler仍然会继续运行直到Runtime Controller中的时间结束,所以在这里用了“仅一次控制器”,可做参考。
(2)当orderStatus}的值为2时,将循环运行While Controller下的http(即test7)请求,当http请求中取样器得到的orderStatus值不为2时退出循环。

官网中的While Controller翻译

While Controller运行其子项,直到条件为“ false ”。

Condition可能的条件值:

  • 空白 - 当循环中的最后一个样本失败时退出循环
  • LAST - 当循环中的最后一个样本失败时退出循环。如果循环之前的最后一个样本失败,请不要进入循环。
  • 其他 - 当条件等于字符串“ false ” 时退出(或不输入)循环

条件可以是最终计算为“ false ”任何变量或函数。这允许根据需要使用jexl3, groovy函数,属性或变量。


请注意,条件被评估两次,一次是在开始采样子项之前,一次是在子项采样结束时,因此将非幂等函数放入条件(如__counter)可能会引入问题。

例子:

${VAR} - 当VAR 值为false时退出循环 where VAR is set to false by some other test element
{__jexl3({__jexl3({C}==10)}
{__jexl3("{__jexl3("{VAR2}”==”abcd”)}
${_P(property)} -property值为false时退出循环

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕城南风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值