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

在Postman中测试对比不同JSON响应数组中的数值

问题需求

我通过Postman的两个不同GET接口获取了两份JSON响应数据,分别为specificYield和expectedYield,二者均为嵌套数组结构,每个子数组包含时间戳和数值。

响应数据示例

specificYield响应数据:

[
    [
        "2020-11-30T00:00:00Z",
        50.701604514154944
    ],
    [
        "2020-12-31T00:00:00Z",
        19.328539610238128
    ],
    [
        "2021-01-31T00:00:00Z",
        25.183636870929693
    ]
]

expectedYield响应数据:

[
    [
        "2020-11-30T00:00:00Z",
        62.78336503569246
    ],
    [
        "2020-12-31T00:00:00Z",
        32.97678871921154
    ],
    [
        "2021-01-31T00:00:00Z",
        40.82916109964013
    ]
]

当前脚本问题

需要编写Postman测试脚本,验证expectedYield中的每个数值始终大于specificYield中对应位置的数值。现有初步脚本因原逻辑基于对象处理,需重构以适配数组结构,当前脚本如下:

pm.test("Expected Yield > Specified Yield", function () {
  const expectedYield = pm.response.json();
  const specificYield = pm.globals.get("specificYield");
  Object.values(expectedYield).forEach((record) => {
    pm.expect(record[0][1]).to.greaterThan(
      Object.values(specificYield).forEach((record) => {
        pm.expect(record[0][1]);
      })
    );
  });
});

重构后的正确脚本

针对数组结构,直接按索引遍历两个数组即可完成验证,同时补充必要的校验逻辑:

pm.test("Expected Yield 始终大于 Specific Yield", function () {
    // 解析当前响应的 expectedYield 数组
    const expectedYield = pm.response.json();
    // 解析全局变量中的 specificYield(全局变量存的是字符串,需转成JSON数组)
    const specificYield = JSON.parse(pm.globals.get("specificYield"));

    // 先校验两个数组长度一致,避免索引越界
    pm.expect(expectedYield.length).to.equal(specificYield.length, "两个数组长度不匹配,无法一一对应对比");

    // 遍历数组,按索引对比对应位置的数据
    expectedYield.forEach((expectedItem, index) => {
        const specificItem = specificYield[index];
        
        // 可选:验证时间戳一致,确保对比的是同一时间点的数据
        pm.expect(expectedItem[0]).to.equal(specificItem[0], `时间戳不匹配:expected为${expectedItem[0]},specific为${specificItem[0]}`);
        
        // 核心验证:expected数值大于specific数值
        pm.expect(expectedItem[1]).to.be.greaterThan(specificItem[1], 
            `${expectedItem[0]}时间点:Expected Yield(${expectedItem[1]}) 不大于 Specific Yield(${specificItem[1]})`);
    });
});

脚本关键说明

  • 数据解析处理:从全局变量获取的specificYield是字符串格式,必须用JSON.parse()转换为数组才能遍历操作
  • 长度校验:先确认两个数组长度一致,避免出现数据错位或索引越界问题
  • 时间戳验证:可选步骤,确保对比的是同一时间维度的数据,避免因数据顺序错误导致无效验证
  • 精准报错:每个断言都添加了自定义错误信息,方便快速定位不符合要求的数据点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:50:20