Jmeter中控制某一段脚本失败后重复执行,并在每个HTTP Request名字中加上循环次数
2014-01-03 13:57
591 查看
==================================================
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,否则就总是报错。
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,否则就总是报错。
相关文章推荐
- Jmeter Thread Group中如果存在HTTP request执行失败,就对整个Thread Group重新执行,限定最大执行次数N次
- Jmeter Thread Group中如果存在HTTP request执行失败,重新执行
- linux shell 控制脚本执行次数
- php循环,die/exit脚本执行控制,文件载入及错误控制
- Bash脚本:命令重复执行指定次数
- 实现IHttpModule接口,给每个页面输出一段脚本
- Jmeter使用CSV Data Set Config参数化数据不重复的多次循环执行(实现多用户多次抽奖功能)
- jmeter学习—003——使用CSV Data Set Config参数化数据不重复的多次循环执行(实现多用户多笔投资不同项目功能)
- Jmeter发送某个request时而成功,时而失败(处理办法:失败的时候尝试重新发送这个HTTP request)
- Jmeter使用CSV Data Set Config参数化数据不重复的多次循环执行
- 冒泡排序的优化 折半查找法 循环打印三角形 耶稣13门徒找叛徒 有1000000个数,每个数取值范围是0~999999,找出其中重复的数,重复的次数。
- Jmeter使用CSV Data Set Config参数化数据不重复的多次循环执行(实现多用户多次抽奖功能)
- Jmeter使用CSV Data Set Config参数化数据不重复的多次循环执行(实现多用户多次抽奖功能)
- Shell脚本的循环:重复执行命令
- Jmeter使用CSV Data Set Config参数化数据不重复的多次循环执行(实现多用户多次抽奖功能)
- 给定一段文字,记录不重复的单词及其使用次数
- sync问题导致shell脚本执行失败
- Play Framework 控制层发起HTTP请求 (Send Http Request In Controller)
- SQL循环执行while控制
- Unity3D控制gameobject脚本执行的顺序