Postman Collection Runner 为什么跳过我的测试用例?

依甜 阅读 38

我在 Postman 里用 Collection Runner 跑一组接口,但明明有 5 个请求,结果只跑了 3 个,另外两个直接被跳过了,状态显示是“skipped”。

我检查了前置脚本和测试脚本,没发现明显错误。也试过单独运行那两个请求,都能正常发送和返回。是不是哪里设置错了?比如环境变量没传对?

我的测试脚本里用了 pm.test("Status code is 200", () => pm.response.to.have.status(200));,应该不会导致跳过吧?

我来解答 赞 2 收藏
二维码
手机扫码查看
2 条解答
FSD-红敏
你这个情况我太熟悉了,之前也踩过坑,Postman Collection Runner 跳过请求(skipped)根本不是测试脚本的问题,测试脚本里那个 pm.test 写法完全没问题,不会导致跳过。

真正导致 Runner 跳过请求的,大概率是下面几种情况,我按发生频率给你排个序,你一个个对一下:

第一种:请求的前置脚本里调用了 pm.test.skip() 或者 return 提前退出了脚本执行
注意,不是测试脚本里跳过,是前置脚本(Pre-request Script)里如果执行了 return,整个请求就会被跳过。比如你写了这样的代码:

if (someCondition) {
pm.test.skip("跳过这个请求");
return; // ⚠️ 关键是这个 return!
}


或者更隐蔽一点:

if (!pm.environment.get("token")) {
console.log("没有 token,跳过");
return; // 一 return,Runner 就认为这个请求执行完了(但没发请求),直接标成 skipped
}


Runner 的机制是:只要 Pre-request Script 执行结束,不管有没有发送请求,都会进入测试阶段;但如果脚本执行到中途被中断(比如 throw error、return、或者同步抛异常),它会认为这个请求“没准备好”,直接跳过。

你需要打开 Collection Runner 的“Show Postman Console”(点右上角眼睛图标),运行时看 Console 有没有报错或提前 exit 的日志。

第二种:环境变量或全局变量缺失导致请求构造失败,但 Postman 不报错而是跳过
比如你在请求 URL 里写了 {{baseUrl}},但运行时这个变量没传,Postman 不会报错,而是直接跳过这个请求。
或者你用 {{nonExistentVar}},值是空字符串,请求 URL 变成 //undefined,Runner 也会跳过。

排查方法:
1. 打开 Runner 的“Variables”面板,确认那两个被跳过的请求用到的所有变量在当前环境里都有值
2. 单独点开那个请求,在“Pre-request Script”里加一句 console.log(pm.environment.toObject()),再用 Runner 跑一遍,看 Console 输出里有没有关键变量是 undefined 或空

第三种:请求被设置成了“Disabled”状态,但你没注意到
这个真的太隐蔽了!Postman 里每个请求旁边有个小开关(像电源键),点了会变灰,代表禁用。
Collection Runner 默认只跑 enabled 的请求,被禁用的直接跳过,状态显示 skipped。

你可能是在某个请求里调试时顺手点了它一下,然后忘了。
检查方法:
在 Collection 里展开所有请求,看有没有灰色的图标(不是深灰色,是浅灰),有的话点一下恢复成亮色。

第四种(少部分情况):请求用了“Authorization”里某种类型,但变量没填导致校验失败,Runner 认为无效而跳过
比如你选了 OAuth2,但 Access Token 变量是空的,Postman 会认为“这请求根本发不出去”,于是跳过。
虽然单独点 Send 会弹出错误提示,但 Runner 模式下它选择静默跳过。

最后补充一个坑:
你提到“单独运行那两个请求都能正常发送”,这个恰恰说明不是网络或服务器问题,而是 Runner 的上下文环境和你手动 Send 的不一致。

我建议你按这个流程排查一遍:

1. 打开 Runner → 点击右上角“Show Postman Console”
2. 选中那两个被跳过的请求,在它们的“Pre-request Script”里加一句:

console.log("=== Start pre-request script for", pm.info.requestName, "===");
console.log("Variables:", pm.environment.toObject());


3. 重新跑 Runner,看 Console 有没有输出这行日志
- 如果完全没输出,说明 Pre-request Script 根本没执行 → 基本是“Disabled”状态
- 如果输出了但后面没“Start test script”日志 → Pre-request Script 里提前 return/throw 了
- 如果 Pre-request Script 执行了,但请求没发出去 → 检查变量是否缺失

需要我帮你分析具体哪一步,你把那两个被跳过请求的 Pre-request Script(去掉敏感信息)发出来,我一眼就能看出问题。
我之前就遇到过一个同事的集合里某个请求被禁用了两周,他天天纳闷怎么少一个请求……
点赞 1
2026-02-25 12:07
Prog.殿洁
你这种情况我遇到过好几次,基本就是环境变量没传对导致的——不是没传,是传了但值是空的或者非法值,Postman 会直接跳过整个请求,不报错也不运行测试脚本。

具体排查步骤:
先打开 Collection Runner 右上角的齿轮图标,点开 "Run Settings",看有没有勾选 "Continue on error",默认是关的,也就是一旦前置脚本或环境变量解析出问题,后面请求就直接 skipped。
然后重点看那两个被跳过的请求,检查它们的请求 URL、Header、Body 里有没有用到环境变量,比如 {{baseUrl}}{{token}} 这种。
在 Runner 界面里,点击那两个 skipped 的请求行,右侧会显示 "Variables" tab,展开看看变量值是不是空字符串或者乱七八糟的值。

另一个常见坑是:测试脚本里如果用了 pm.test(),但前面的脚本(比如 pre-request script)里调用了 pm.sendRequest(),而且没处理好回调或者抛了异常,也会导致请求被跳过。

推荐的做法是,先临时删掉那两个请求的前置脚本和测试脚本,只保留最基础的 GET 请求,单独跑一次看看会不会被跳;如果正常了,再逐段加回脚本,定位是哪行代码触发了跳过逻辑。

还有个隐藏选项:在 Runner 界面底部有个 "Show inline errors" 的复选框,记得勾上,这样跳过的请求会弹出具体原因,比如 "Skipping due to invalid variable reference",这种提示比你猜靠谱多了。
点赞 3
2026-02-24 10:12