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

Postman单元测试校验接口响应数组中Outlet1库存及其余门店库存值问题

问题分析

是否需要用循环编写测试用例

是,你需要通过循环遍历所有非Outlet1的返回条目,逐个校验Inventory值,无法通过单条断言覆盖所有校验场景。

现有代码的错误原因

  • 第一层判断逻辑错误:jsonData是数组类型,直接访问jsonData.Outlet得到的是undefined,因此if (jsonData.Outlet !== "Outlet1")的条件永远不成立,包裹在内的校验逻辑完全不会执行,测试用例没有运行任何断言就默认返回通过。
  • 循环内的查找逻辑错误:即使去掉错误的if判断,forEach循环内调用find()方法每次只会返回第一个符合「Outlet不等于Outlet1」的条目(也就是固定返回Outlet2),永远只会校验Outlet2的Inventory值,根本不会遍历到Outlet3、Outlet4,自然发现不了Outlet3的数值错误。

修复后的测试代码

pm.test("Inventory.OnHand Outlet1 == 12", () => {
    const Outlet1Result = jsonData.find(a => a.Outlet === "Outlet1");
    // 新增非空判断,避免接口未返回Outlet1时报错不明确
    pm.expect(Outlet1Result, "返回结果中缺失Outlet1条目").to.exist;
    pm.expect(Outlet1Result.Inventory).to.eql(12);
});

pm.test("Inventory.OnHand 非Outlet1条目均等于0", () => {
    // 先筛选所有非Outlet1的条目
    const otherOutletList = jsonData.filter(item => item.Outlet !== "Outlet1");
    // 遍历每个条目做校验
    otherOutletList.forEach(outletItem => {
        pm.expect(outletItem.Inventory, `${outletItem.Outlet}的Inventory值不符合要求`).to.eql(0);
    });
});

修复后运行测试时,会正常捕获到Outlet3的Inventory值为3的错误,符合预期的失败结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:24:02