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

Postman校验JSON字段匹配指定值时测试全部误通过问题排查

问题排查结论

你的测试脚本全部误报通过,是两个编写错误导致的:

  • 取值路径错误:接口返回的dhcpServers数组嵌套在result字段下,原脚本直接读取jsonData.dhcpServers拿到的是undefined,lodash的_.each遍历undefined时不会执行循环内的任何代码,三个测试块因为没有抛出任何断言错误,被Postman默认判定为执行通过。
  • 断言方法误用:Chai断言库的.have.body方法是用来校验HTTP响应整体报文内容的,不支持对单个字符串值做等值判断,就算取值路径正确,这个写法也无法正确校验state字段的取值。

另外你提供的响应体里,Unknown是security字段的固定返回值,不是state字段的状态值,写断言时不要混淆两个字段。

修正后的参考脚本

如果你的测试需求是「校验当前所有DHCP服务状态为OK,不存在状态为Unknown/Unreachable的实例」,可以用以下脚本:

const jsonData = pm.response.json()
// 修正取值路径
const dhcpServers = jsonData.result.dhcpServers

pm.test('所有DHCP服务运行状态为OK', () => {
    _.each(dhcpServers, (server) => {
        // 用eql做字符串等值校验
        pm.expect(server.state).to.eql('OK')
    })
})

pm.test('无状态为Unknown的DHCP服务', () => {
    const unknownServers = _.filter(dhcpServers, server => server.state === 'Unknown')
    pm.expect(unknownServers.length).to.eql(0)
})

pm.test('无状态为Unreachable的DHCP服务', () => {
    const unreachableServers = _.filter(dhcpServers, server => server.state === 'Unreachable')
    pm.expect(unreachableServers.length).to.eql(0)
})

如果你的测试需求是校验三类状态都存在,只需要把后两个测试的断言改成pm.expect(xxx.length).to.be.above(0)即可。

附:DHCP服务状态枚举说明
  • Unknown:DHCP服务器控制器状态未知
  • OK:DHCP服务器控制器和服务运行正常
  • Unreachable:DHCP服务器控制器离线或无法访问
  • Out of date:DHCP服务器控制器版本与Central节点不一致
  • Updating:DHCP服务器控制器正在进行版本升级
  • Uninitialized:DHCP服务器所在设备未完成初始化,需要手动操作
  • Detached:DHCP服务器已被分离但未从系统中移除
  • DHCP Service Down:DHCP服务停止,无法响应查询请求
  • DHCP Service Impaired:DHCP服务正在运行但存在功能异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 23:39:21