在使用jmeter调用接口时,某些场景需要轮询接口直到接口返回预期的才停止轮询,这种场景在一些异步处理的接口非常常见。如果通过jmeter while controller可以实现这样的目的,但是一旦环境出问题或者其他的原因导致接口一直没有返回预期的结果跳出这个while controller循环,这样会导致线程一直处于运行状态无法自动结束,所以这里在while Controller中的条件可以增加一些轮询次数判断,一旦超过条件中设置的最大轮询次数while controller将不再继续执行。
列举一个场景一个接口提交业务办理请求后,下一个接口去查询处理状态,这个查询状态的接口是异步的。
当status=2时,状态表示处理中,status=5时表示处理成功。按照正常业务流程需要 status=5时,才能正常继续后续的业务流程,这时就用到while controller
1 添加一个test请求,在响应中提取status,BeanShell PostProcessor中添加接口请求次数vars.put("count","1");
image.png
image.png
2 添加while controller,在其中添加test请求 在响应中提取status,BeanShell PostProcessor处理请求次数count+1
image.png
int count1 = Integer.parseInt(vars.get("count"));
vars.put("count",String.valueOf(count1+1));
3 while controller设置循环条件:{status}==2&&${count}<20,)}
image.png
表示 status为2(处理中),且请求查询接口小于20次情况下 继续轮询此接口
轮询成功:
image.png
网友评论