前言
工作中在搭建jmeter自动化框架时,出现偶然的因素导致请求失败,为避免其他干扰因素,故需要对失败请求进行重试,最大程度的保证请求成功
一、功能实现
jmeter请求失败之后,进行重试,重试次数可以自定义!
1、添加While控制器
2、在需要测试的请求后面添加beanshell断言,断言中输出两个参数,1.status:success和fail两个状态码;2.waitTimes,赋值表达式${__counter(FALSE,Vcount)},为jmeter内置自增函数
3、while控制器的判断条件为${__javaScript(("${status}"!="fali")&&("${waitTimes}"<"5"))} ;${waitTimes}小于5为重试5次,可进行自定义
二、详细和代码如下
1.beanshell断言代码如下
String get_url = SampleResult.getUrlAsString();
String response_data = prev.getResponseDataAsString();
String code = prev.getResponseCode();
String result1 = "\"success\":true";//为正常请求响应中请求成功标签,需要根据每个请求响应不同进行修改
if(code.equals("200")){
if(!response_data.contains(result1)){
Failure =true;
FailureMessage = get_url + ",接口报错" + response_data;
log.error(FailureMessage);
vars.put("status","success");
}else{
Failure = false;
vars.put("status","fali");
}
}else{
Failure =true;
FailureMessage = get_url + ",接口报错" + response_data;
log.error(FailureMessage);
vars.put("status","success");
}
vars.put("waitTimes","${__counter(FALSE,Vcount)}");
2.while控制器条件示例
总结
这是while控制器+状态码+请求次数综合控制的失败重试机制;也可以进行其他高效且通用的方式,欢迎分享!