You need to enable JavaScript to run this app. JMeter中如何等待直至接口响应中出现指定的字段内容
优惠活动
大模型
产品
解决方案
定价
更多

JMeter中如何等待直至接口响应中出现指定的字段内容

JMeter 等待JSON指定字段返回实现方案

整体逻辑为:轮询调用目标接口,校验响应中data.mylist下的1、2字段是否存在,两个字段都存在则结束等待执行后续步骤,同时设置最大超时时间避免死循环。具体配置步骤如下:

步骤1:配置循环控制器

在测试计划中目标HTTP请求的上级添加循环控制器:

  • 可选方案1:循环次数设置为永远,后续通过条件判断主动跳出
  • 可选方案2:直接设置最大循环次数,比如每次请求间隔1秒、最多等待30秒的话,循环次数设为30,超时自动跳出

步骤2:配置接口请求与字段提取

在循环控制器内部添加目标HTTP请求,正常配置请求地址、参数等信息后,给请求添加JSON提取器,提取目标字段:

  • 提取data.mylist.1:引用名称填list1,JSON路径表达式填$.data.mylist.1,匹配模式填0,默认值填NOT_FOUND
  • 提取data.mylist.2:引用名称填list2,JSON路径表达式填$.data.mylist.2,匹配模式填0,默认值填NOT_FOUND

步骤3:配置跳出逻辑

在HTTP请求后添加If控制器,配置如下:

  • 勾选Interpret Condition as Variable Expression?选项
  • 条件框填入:"${list1}" != "NOT_FOUND" && "${list2}" != "NOT_FOUND"
  • 在If控制器内部添加测试动作组件,操作选择Break Current Loop,命中条件时会直接跳出循环控制器

步骤4:配置请求间隔

在HTTP请求前添加固定定时器,设置线程延迟为1000毫秒(可根据实际需求调整),避免短时间高频请求给服务器造成压力。

灵活扩展方案(复杂场景适用)

如果有更复杂的校验逻辑(比如不仅要字段存在,还要内部元素数量符合要求),可以把JSON提取器替换为JSR223后置处理器,语言选择groovy,代码示例:

import groovy.json.JsonSlurper
// 解析响应
def respJson = new JsonSlurper().parseText(prev.getResponseDataAsString())
// 自定义校验逻辑
def hasList1 = respJson?.data?.mylist?.get("1") != null && !respJson.data.mylist.get("1").isEmpty()
def hasList2 = respJson?.data?.mylist?.get("2") != null && !respJson.data.mylist.get("2").isEmpty()
// 存储校验结果
vars.put("allFieldsValid", hasList1 && hasList2 ? "true" : "false")

之后If控制器的条件修改为"${allFieldsValid}" == "true"即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:15:09