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

Postman测试响应JSON字段数据类型报expected undefined to be a number错误解决

错误原因

出现AssertionError: expected undefined to be a number报错,核心原因是你从响应JSON里读取的passagiersnummer字段不存在,读取结果为undefined,而非字段类型不匹配。常见的触发场景有3种:

  • 实际返回的响应结构和你给出的示例不一致,passagiersnummer字段嵌套在其他父级字段下(比如常见的data、result业务字段层),直接从根路径读取自然为空
  • 响应头的Content-Type不是application/json,导致pm.response.json()解析异常,拿到的不是预期的JSON对象
  • 字段拼写有误,JavaScript对大小写、特殊字符敏感,只要和实际返回的字段名有一点差异就会读取失败
修复步骤
  1. 先加调试代码确认实际响应结构,把下面的脚本替换你原来的测试脚本,运行后在Postman控制台查看打印的解析结果,确认字段路径和拼写:
pm.test("Test data type of the response", function () {
    // 先校验响应为合法JSON格式,避免解析报错
    pm.response.to.be.json;
    const jsonData = pm.response.json();
    // 打印解析结果,确认字段路径
    console.log('解析后的响应内容:', jsonData);
    // 先校验字段存在,再校验类型
    pm.expect(jsonData).to.have.property('passagiersnummer');
    // 如果你需要严格校验为整数(而非浮点数)可以用这个写法,不需要的话保留to.be.a("number")即可
    pm.expect(jsonData.passagiersnummer).to.be.a('number').and.satisfy(Number.isInteger);
    pm.expect(jsonData).to.have.property('naam').that.is.a('string');
});
  1. 如果控制台打印的结果显示passagiersnummer是嵌套字段,比如在data层下,就把取值路径修改为对应层级即可,示例:
// 示例:字段嵌套在data下的写法
pm.expect(jsonData.data.passagiersnummer).to.be.a('number');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:24:01