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

如何在ReadyAPI中从JSON响应提取多值生成列表填充请求体?

在ReadyAPI中生成列表的两种方案

一、从数据源获取所有值生成列表

可行,但默认数据源是逐行迭代执行请求,要收集所有值生成列表需通过脚本实现,步骤如下:

    1. 在测试用例中添加数据源(如Excel、CSV),配置好对应数据列
    1. 在数据源之前添加Groovy脚本测试步骤,初始化全局列表变量:
// 初始化全局列表,用于存储所有数据源值
context.testCase.setPropertyValue("ALL_DATA_VALUES", new ArrayList().toString())
    1. 在数据源之后、目标请求之前,添加另一个Groovy脚本,将当前行的值追加到全局列表:
// 获取当前数据源行的目标值(假设列名为"bookId")
def currentValue = context.expand('${DataSource#bookId}')
// 解析全局列表并转为集合
def allValues = new groovy.json.JsonSlurper().parseText(context.testCase.getPropertyValue("ALL_DATA_VALUES"))
// 添加当前值并转换为整数类型
allValues.add(currentValue as Integer)
// 更新全局列表的JSON字符串
context.testCase.setPropertyValue("ALL_DATA_VALUES", new groovy.json.JsonBuilder(allValues).toString())
    1. 在目标请求的请求体中,直接引用全局列表变量:
{"booksId":${#TestCase#ALL_DATA_VALUES},"reference":"test"}
    1. 调整执行逻辑:设置数据源循环遍历所有行,待所有值收集完成后,再执行目标请求(可通过测试用例的执行顺序或条件判断实现)

二、从API JSON响应提取所有书籍ID填充请求体

这是你当前场景更高效的方案,具体步骤:

1. 提取ID并存储为全局变量

在返回书籍列表的API请求后,添加Groovy脚本测试步骤,用以下代码提取所有id:

// 获取API响应内容
def response = context.expand('${BookListRequest#Response}')
// 解析JSON响应
def json = new groovy.json.JsonSlurper().parseText(response)
// 提取所有书籍的id并转为整数列表
def bookIds = json.store.book.collect { it.id as Integer }
// 将列表转为JSON字符串,存入测试用例全局变量
context.testCase.setPropertyValue("BOOK_ID_LIST", new groovy.json.JsonBuilder(bookIds).toString())

2. 在目标请求体中引用变量

编辑目标请求的请求体,替换booksId数组为全局变量:

{"booksId":${#TestCase#BOOK_ID_LIST},"reference":"test"}

3. 验证结果

执行测试用例,查看目标请求的实际发送内容,确认booksId已填充为[1,2,3]

补充说明

你使用数据源时仅能获取最后一个值,是因为默认每次迭代都会覆盖变量值而非累加,必须通过脚本主动收集所有值才能生成完整列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:46