如何在JMeter中实现采样器响应状态的条件等待验证(不重触发)
解决方案:等待数据库记录状态变更的JMeter实现
核心思路
不能重复触发原POST请求,所以要新增一个只读查询请求来轮询状态,直到状态变为Completed或超时。
具体步骤
- 保留原POST请求:仅执行1次,用于启动刷新流程。
- 添加状态查询请求:新增一个HTTP GET请求(或其他只读接口),专门获取当前记录的状态信息,避免重复触发流程。
- 提取状态字段:给查询请求添加
JSON Extractor,配置如下:- 引用名称:
status - JSON Path表达式:
$.status - 匹配数字:
1(提取第一个匹配值)
- 引用名称:
- 添加循环控制器:将查询请求、提取器包入循环控制器,设置循环规则:
- 循环条件:
${__jexl3(${status} != 'Completed',)}(状态未完成则继续循环) - 最大循环次数:设置合理值(比如30次,防止无限循环)
- 循环条件:
- 添加轮询间隔定时器:在循环控制器内添加
固定定时器,设置延迟时间(比如3000毫秒,即3秒),避免频繁请求给服务造成压力。 - 添加状态验证断言:给查询请求添加
响应断言,确保状态符合预期:- 应用范围:主样本
- 响应字段:响应文本
- 匹配规则:Equals
- 模式字符串:
Completed
执行逻辑
原POST请求执行后,循环控制器会每隔3秒调用一次查询接口,提取并检查status字段。当status变为Completed时,循环终止,继续执行后续采样器;如果达到最大循环次数仍未完成,脚本会终止循环并标记断言失败。
内容的提问来源于stack exchange,提问作者jitendra gupta
相关产品推荐
相关产品推荐

