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

如何使用JSON测试数据文件批量验证含嵌套元素的JSON响应?

问题

我有一个包含嵌套元素的JSON响应,希望用Postman的测试函数对照JSON测试数据进行验证。目前通过硬编码实现验证:

const jsonData = pm.response.json();
        
pm.expect(jsonData.items[0].title).to.eql(pm.iterationData.get("title"));
pm.expect(jsonData.items[1].title).to.eql(pm.iterationData.get("title"));

我的JSON测试数据文件内容如下:

[
  {
    "title": "Title1"
  },
  {
    "title": "Title2"
  }
]

现在想换一种方式实现验证,同时保留现有JSON测试数据结构——比如当测试数据中有100个title需要验证时,无需编写100行重复代码。

解决方案

用循环遍历即可避免重复代码,根据测试运行的方式分两种情况处理:

情况1:一次性验证所有测试数据

如果测试数据是作为完整数组传入(比如存入环境变量),先校验响应与测试数据的长度一致,再循环逐个对比:

const jsonData = pm.response.json();
// 从环境变量读取测试数据并解析为数组(需提前将测试数据存入环境变量)
const testData = JSON.parse(pm.environment.get("testData"));

// 先确保响应的items数量和测试数据匹配
pm.expect(jsonData.items.length).to.equal(testData.length);

// 循环验证每个title
jsonData.items.forEach((item, idx) => {
  pm.expect(item.title).to.eql(testData[idx].title);
});

情况2:数据驱动迭代验证

如果是用Postman的数据文件做批量迭代(每次请求对应测试数据里的一条),直接用当前迭代索引匹配响应的items位置:

const jsonData = pm.response.json();
// 获取当前迭代的索引(从0开始计数)
const currentIdx = pm.info.iteration;

pm.expect(jsonData.items[currentIdx].title).to.eql(pm.iterationData.get("title"));

这种方式下,不管测试数据有多少条,只需一行核心验证代码,Postman会自动遍历所有测试数据完成验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:51:07