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

Postman API测试:POST响应中值的类型断言验证异常

问题原因及解决方案

原代码的核心问题

  1. 响应结构定位错误:你的响应是数组类型,jsonData 是数组实例,直接访问 jsonData.customerActivity 会得到 undefined。_.each 遍历undefined时不会执行循环体里的断言逻辑,导致测试直接“成功”,根本没检查到clientCode的类型。
  2. 字段路径错误:即使定位到customerActivity,每个元素里的clientCode嵌套路径是CustomerActivity -> Client -> clientCode,原代码里的item.clientCode完全找不到对应字段,同样会因为访问不到而没触发断言。

修正后的测试代码

let jsonData = pm.response.json()

pm.test("clientCode is a number", () => {
    // 先确认响应数组有元素,且存在customerActivity列表
    pm.expect(jsonData).to.be.an("array").that.is.not.empty;
    const customerActivities = jsonData[0].customerActivity;
    pm.expect(customerActivities).to.be.an("array").that.is.not.empty;

    // 遍历每个客户活动项
    _.each(customerActivities, (activityItem) => {
        // 逐层断言字段存在,避免TypeError
        pm.expect(activityItem).to.have.property("CustomerActivity");
        pm.expect(activityItem.CustomerActivity).to.have.property("Client");
        pm.expect(activityItem.CustomerActivity.Client).to.have.property("clientCode");
        
        // 最终断言类型
        pm.expect(activityItem.CustomerActivity.Client.clientCode).to.be.an("number");
    })
})

额外说明

  • 加入前置断言(检查数组非空、字段存在)可以避免出现TypeError: Cannot read properties of undefined,同时确保测试逻辑真正执行。
  • 如果你的响应可能有多个顶层数组元素,需要调整遍历逻辑(比如先遍历jsonData数组,再处理每个元素的customerActivity)。
  • 现在运行测试,clientCode是字符串类型的"TEST001"、"TEST002",会触发断言失败,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:30:58