You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中实现响应为COMPLETED时仅执行一次End Ride API

解决JMeter中监控Ride Status并执行End Ride后停止循环的问题

问题分析

当前使用While控制器陷入无限循环,核心原因是未正确设置循环终止条件,或未在执行End Ride API后触发循环停止逻辑。

可行解决方案

按以下步骤配置测试计划:

1. 初始化循环控制变量

在Thread Group下添加「User Defined Variables」组件,定义变量:

  • 变量名:continueLoop
  • 值:true

2. 配置While控制器

添加「While Controller」,设置条件为:

${__jexl3(${continueLoop} == true && ${__counter(,)} <= 100,)}
  • ${continueLoop} == true:控制循环是否继续
  • ${__counter(,)} <= 100:设置最大循环次数(避免无限等待,可按需调整)

3. 提取Ride Status

在While控制器内,先添加查询Ride状态的HTTP Request,然后添加「JSON Extractor」:

  • 引用名称:rideStatus
  • JSON Path表达式:$.status
  • 匹配数字:1(确保提取第一个匹配的status值)

4. 触发End Ride并停止循环

在JSON Extractor后添加「If Controller」,设置条件:

${__jexl3("${rideStatus}" == "COMPLETED",)}

在If Controller内添加:

  • HTTP Request:配置End Ride API的请求参数
  • JSR223 Sampler:输入代码vars.put("continueLoop", "false");,将循环控制变量设为false,终止下一次循环

5. (可选)添加间隔定时器

在查询状态的HTTP Request后添加「Fixed Timer」,设置线程延迟(比如5000毫秒),避免频繁调用接口给服务器造成压力。

关键注意事项

  • 确保JSON Extractor能正确解析响应:你的接口响应格式合法,只要JSON Path表达式正确就能提取到status
  • 字符串比较需加引号:"${rideStatus}" == "COMPLETED" 避免因变量为空或类型问题导致判断失效
  • 最大循环次数:防止因接口一直未返回COMPLETED而陷入无限循环

内容的提问来源于stack exchange,提问作者Snehal Matharu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:55:16