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

Postman无法给函数累加失败计数且无法停止请求执行怎么办

核心问题排查

  • 测试脚本逻辑错误:每次执行测试脚本时都先将failures集合变量重置为空数组,导致之前的失败记录被清空,无法正确累加失败次数;且仅用pm.test断言,断言失败时不会执行后续累加逻辑,无法统计非200状态码的情况。
  • 执行流控制逻辑问题:postman.setNextRequest(null)仅在集合Runner批量运行时生效,单独执行单个请求不会触发该逻辑;另外如果你的指定新请求是集合内的请求,用pm.sendRequest只是异步发送单次请求,不会控制集合的后续执行顺序,需要按需调整。

修复后代码

1. 集合级前置脚本(建议把变量初始化放到这里,不要放在单个请求里,仅执行一次)

// 初始化失败计数数组,仅第一次运行时设置
if (!pm.collectionVariables.has("failures")) {
    pm.collectionVariables.set("failures", []);
}

2. 接口测试脚本(替换你原来的测试脚本)

let failures = pm.collectionVariables.get("failures");
// 先判断响应状态码,非200就累加失败计数
if (pm.response.code !== 200) {
    failures.push(pm.response.code);
    pm.collectionVariables.set("failures", failures);
}
// 原有状态断言保留
pm.test("Status test", function () {
    pm.response.to.have.status(200);
});

3. 后续请求的前置脚本(替换你原来的前置脚本)

let failures = pm.collectionVariables.get("failures");
console.log(failures);
if (failures.length > 0) {
    console.log('failures found');
    // 如果要执行集合内名为"New Request"的请求,用setNextRequest控制执行流
    postman.setNextRequest("New Request");
    // 如果只是要异步发送请求不调整执行流,再保留pm.sendRequest逻辑
    // pm.sendRequest("New Request", function (err, res) {
    //     console.log(res);
    // });
} else {
    console.log('NO failures');
    // 停止后续所有请求,仅集合Runner运行时生效
    postman.setNextRequest(null);
    return null;
}

运行注意事项

  • 必须通过Postman的集合Runner批量运行整个请求流,setNextRequest的控制逻辑才会生效,单独执行单个请求无法停止后续请求。
  • 如果需要多次运行测试,每次运行前可以手动清空failures集合变量,或者在集合级前置脚本里加每次运行前重置的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:39:05