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

如何配置JMeter,避免测试因暂未获取预期结果而失败

JMeter实现等待上传状态完成的测试逻辑

1. 定义超时控制变量

先通过「用户定义的变量」元件设置两个变量:

  • MAX_WAIT_SECONDS:值设为60(最大等待1分钟)
  • START_TIME:值设为${__time(,)}(用JMeter内置函数获取测试开始时的时间戳)

2. 添加While控制器包裹查询请求

在查询图片状态的请求外层添加While控制器,设置循环条件为:

${__jexl3(${__time(,)} - ${START_TIME} < ${MAX_WAIT_SECONDS}*1000 && !"published".equals(vars.get("uploadStatus")),)}

这个条件的逻辑是:只要当前时间与开始时间的差小于60秒,且未获取到published状态,就持续循环查询。

3. 配置查询请求,避免404判定为失败

查询请求初期会返回404,需要让JMeter不把这类请求标记为失败:

  • 打开查询请求的「高级」标签页
  • 勾选「忽略状态码」选项,这样404响应不会被统计为失败请求

4. 提取uploadStatus状态值

在查询请求下方添加JSON提取器(如果响应是JSON格式):

  • 引用名称:uploadStatus
  • JSON Path表达式:$.uploadStatus(请根据实际响应的JSON结构调整路径)
  • 匹配数字:1(取第一个匹配结果)

如果响应是纯文本/HTML格式,改用正则表达式提取器:

  • 引用名称:uploadStatus
  • 正则表达式:uploadStatus=(published)(根据实际响应内容调整匹配规则)
  • 模板:$1$

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

为避免短时间内频繁请求压垮服务器,在查询请求下方添加固定定时器,设置延迟时间为2000毫秒(即每2秒查询一次)。

逻辑验证

运行测试时,While控制器会自动执行以下流程:

  1. 每2秒发送一次查询请求
  2. 若获取到uploadStatus=published,立即终止循环
  3. 若超过60秒仍未获取到目标状态,也自动终止循环
  4. 期间所有404响应不会被计入失败率,解决测试报告失败率过高的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:38:18