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

如何修改Postman健康检查脚本以兼容预期的503响应

解决方案

你需要调整测试逻辑,允许两种合法场景:

  1. 正常情况:响应状态码200,顶级status为"OK"
  2. 预期异常:响应状态码503,顶级status为"DOWN"且services.stats.status为"503"

修改后的脚本如下:

pm.test("状态码合法", function () {
    const statusCode = pm.response.code;
    const jsonData = pm.response.json();
    
    // 允许状态码为200或503
    pm.expect(statusCode).to.be.oneOf([200, 503]);
    
    if (statusCode === 503) {
        // 503场景下必须满足顶级status为DOWN,且stats服务返回503
        pm.expect(jsonData.status).to.eql("DOWN");
        pm.expect(jsonData.services?.stats?.status).to.eql("503");
    } else {
        // 200场景保持原校验逻辑
        pm.expect(jsonData.status).to.eql("OK");
    }
});

pm.test("服务状态符合预期", function () {
    const jsonData = pm.response.json();
    const statusCode = pm.response.code;
    
    if (statusCode === 200) {
        // 正常状态下所有服务必须返回200
        Object.values(jsonData.services).forEach(service => {
            pm.expect(service.status).to.eql("200");
        });
    } else if (statusCode === 503) {
        // 仅允许stats服务返回503,其余服务必须正常
        Object.entries(jsonData.services).forEach(([name, service]) => {
            if (name === "stats") {
                pm.expect(service.status).to.eql("503");
            } else {
                pm.expect(service.status).to.eql("200");
            }
        });
    }
});

逻辑说明

  • 合并原有的状态码与顶级status校验,通过oneOf允许两种合法状态码
  • 针对503场景增加专属校验规则,确保只有stats服务返回预期的503状态
  • 细化服务状态校验:正常场景下所有服务必须正常;异常场景仅stats可返回503,其余服务仍需保持可用
  • 使用?.可选链操作符避免stats服务不存在时抛出错误(若Postman版本不支持,可替换为jsonData.services && jsonData.services.stats)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:35:00