如何根据响应代码处理jmeter中的延迟
How to handle delay in jmeter based on response code
我的要求是,每当 Jmeter 执行出现错误时,在开始下一次迭代之前应该有一个延迟。
"Start Next Thread Loop" 在 Thread Group 级别选择用于 Sampler 错误。因此,如果在执行过程中出现任何错误,Jmeter 将启动一个新的迭代。
为此,我在迭代开始时使用了 Beanshell 计时器。如果响应代码不是“200”
,则添加以下代码用于延迟
String code = prev.getResponseCode();
if(code!="200"){
log.info("::::::::::::::::::::::::::::Response Code = "+code);
log.info("sleep for 10sec");
return 10000;
}
else
return 0;
如果有更好的方法,请告诉我。
我相信 prev.getResponseCode() 也可用于执行任何类型的清理任务,以防出现任何错误。
例如,如果用户登录到应用程序并在注销之前遇到错误。我们可以在迭代开始时测试之前的响应代码是否有错误,如果有错误,我们可以让用户注销应用程序。
您可以使用:
- If Controller 将使用
检查上次响应是否有误
${__jexl2("${JMeterThread.last_sample_ok}" == "false",)}
- Test Action 将用于启动下一个线程循环
测试计划将具有以下布局:
我的要求是,每当 Jmeter 执行出现错误时,在开始下一次迭代之前应该有一个延迟。
"Start Next Thread Loop" 在 Thread Group 级别选择用于 Sampler 错误。因此,如果在执行过程中出现任何错误,Jmeter 将启动一个新的迭代。
为此,我在迭代开始时使用了 Beanshell 计时器。如果响应代码不是“200”
,则添加以下代码用于延迟String code = prev.getResponseCode();
if(code!="200"){
log.info("::::::::::::::::::::::::::::Response Code = "+code);
log.info("sleep for 10sec");
return 10000;
}
else
return 0;
如果有更好的方法,请告诉我。
我相信 prev.getResponseCode() 也可用于执行任何类型的清理任务,以防出现任何错误。
例如,如果用户登录到应用程序并在注销之前遇到错误。我们可以在迭代开始时测试之前的响应代码是否有错误,如果有错误,我们可以让用户注销应用程序。
您可以使用:
- If Controller 将使用 检查上次响应是否有误
${__jexl2("${JMeterThread.last_sample_ok}" == "false",)}
- Test Action 将用于启动下一个线程循环
测试计划将具有以下布局: