Jmeter 通过while Controller循环轮询接口同时控制轮询次数

在使用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设置循环条件:{__javaScript({status}==2&&${count}<20,)}
表示 status为2(处理中),且请求查询接口小于20次情况下 继续轮询此接口

image.png

轮询成功:
image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,252评论 1 23
  • 一. Java基础部分.................................................
    wy_sure阅读 3,837评论 0 11
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地...
    永远的冷冽阅读 1,172评论 0 6
  • 在伊甸园当中有一棵分别善恶树,树上的果子耶和华神是不允许亚当和夏娃吃的。但夏娃在蛇的诱导下,加上那棵树的果子是可喜...
    黄青海阅读 2,320评论 7 17