Jmeter中控制某一段脚本失败后重复执行,并在每个HTTP Request名字中加上循环次数...

==================================================

1.While Controller之前有一个BeanShell Sampler,用于Init Note Parameters

vars.put("INCREMENT", "0");
vars.putObject("ANYSAMPLEFAIL", false);
vars.putObject("ISCONTINUE", true);
vars.putObject("MAXLOOP", 5);

==================================================

2.While Controller内则是这样的

==================================================

2.1首先是需要在失败之后重复执行的一些步骤,每个HTTP request名称后面都可以加上一个“_${INCREMENT}”,这样就可以标识出循环到了第几次;

==================================================

2.2接着是一个BeanShell Assertion,用于判断取样器的结果(Judge Sample Result)

import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.assertions.AssertionResult;  
 
SampleResult prev_result=ctx.getPreviousResult();  
 
var increment = vars.get("INCREMENT");
Integer maxloop = (Integer)vars.getObject("MAXLOOP");
 
if (prev_result  !=  null  && !prev_result.isSuccessful())  
{
              vars.putObject("ANYSAMPLEFAIL", true);
              if (Integer.parseInt(increment)< (maxloop.intValue() - 1))
             {   
                  prev_result.setSuccessful(true);   
             }       
}

==================================================

2.3最后是一个BeanShell Sampler用于控制循环次数(Control Loop Count)

import org.apache.jmeter.util.JMeterUtils;

var increment = vars.get("INCREMENT");
Integer tempIncrement=Integer.parseInt(increment);
tempIncrement++;
Boolean requestResult = (Boolean)vars.getObject("ANYSAMPLEFAIL");
Integer maxloop = (Integer)vars.getObject("MAXLOOP");
boolean iscontinue = (tempIncrement < maxloop) && requestResult.booleanValue() ;
 
vars.putObject("ISCONTINUE", iscontinue);
vars.putObject("ANYSAMPLEFAIL", false);
vars.put("INCREMENT",tempIncrement.toString());

==================================================

备注:

     只有以vars.put("INCREMENT", "0")的方式定义变量,才可以在HTTP request中通过${INCREMENT}直接进行引用,以vars.putObject("INCREMENT", "0")的方式定义变量就不可以。

      而且,通过vars.get("INCREMENT")获取变量的值时,必须这样:var increment = vars.get("INCREMENT"),即左边的变量必须定义为var,否则就总是报错。

转载于:https://www.cnblogs.com/MasterMonkInTemple/p/3503590.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值