Postman Collection Runner 为什么跳过我的测试用例? 依甜 提问于 2026-02-24 10:11:20 阅读 87 工具 我在 Postman 里用 Collection Runner 跑一组接口,但明明有 5 个请求,结果只跑了 3 个,另外两个直接被跳过了,状态显示是“skipped”。 我检查了前置脚本和测试脚本,没发现明显错误。也试过单独运行那两个请求,都能正常发送和返回。是不是哪里设置错了?比如环境变量没传对? 我的测试脚本里用了 pm.test("Status code is 200", () => pm.response.to.have.status(200));,应该不会导致跳过吧? Postman 我来解答 赞 7 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 FSD-红敏 Lv1 你这个情况我太熟悉了,之前也踩过坑,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(去掉敏感信息)发出来,我一眼就能看出问题。 我之前就遇到过一个同事的集合里某个请求被禁用了两周,他天天纳闷怎么少一个请求…… 回复 点赞 3 2026-02-25 12:07 Prog.殿洁 Lv1 你这种情况我遇到过好几次,基本就是环境变量没传对导致的——不是没传,是传了但值是空的或者非法值,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",这种提示比你猜靠谱多了。 回复 点赞 5 2026-02-24 10:12 加载更多 相关推荐 2 回答 65 浏览 Postman Collection Runner 里怎么在每次迭代后清空环境变量? 我在用 Postman 的 Collection Runner 做批量测试,每个请求都依赖上一个的响应数据,但发现环境变量会残留到下一次迭代,导致结果混乱。试过在 Tests 里用 pm.enviro... 新艳 工具 2026-02-24 14:32:20 2 回答 65 浏览 Postman Collection Runner 里怎么获取上一个请求的响应数据? 我在用 Postman 的 Collection Runner 跑一组接口,第二个请求需要带上第一个请求返回的 token,但不知道怎么在 Runner 里把前一个响应的数据传给下一个请求。 我试过在... ლ素平 工具 2026-02-26 23:03:18 1 回答 68 浏览 Postman团队协作时环境变量不生效怎么办? 我们团队在Postman里共享了一个Collection,但每个人本地的环境变量(比如API_BASE_URL)设置后,在请求里引用{{API_BASE_URL}}却总是变成空字符串,根本没替换。明明... 自娴 ☘︎ 工具 2026-03-12 13:48:19 1 回答 66 浏览 Postman Monitor 为什么定时任务没触发? 我用 Postman 创建了一个 Monitor,设置每小时跑一次接口测试,但实际根本没执行,日志里也看不到记录。 检查了 Collection 和环境变量都没问题,手动 Run 能成功。是不是免费账... 公孙欣辰 工具 2026-03-22 22:05:16 1 回答 61 浏览 Postman数据驱动测试怎么读取外部JSON文件里的多组参数? 我在用Postman做接口的数据驱动测试,想从外部JSON文件里读取多组测试数据,但每次运行只跑第一条,后面的都没执行。是不是我的数据结构写错了? 我试过把JSON放在data里,也检查了Collec... Designer°爱娜 工具 2026-03-09 16:19:22 2 回答 94 浏览 Postman Data Driven测试时变量替换不生效怎么办? 在用Postman做数据驱动测试时遇到了奇怪的问题,明明在集合变量里设置了username和password,但在测试用例执行时请求体里的变量还是原样显示成{{username}}。我按照文档把JSO... 上官志丹 工具 2026-01-28 18:52:31 2 回答 130 浏览 为什么Postman集合里的环境变量在循环请求时没生效? 我在用Postman集合测试接口时,给集合绑定了环境变量,但在循环发送请求时发现变量值没被替换,直接显示成{{var_name}}。比如我设置了baseURL变量,但请求地址还是原样。 尝试过在集合设... 庆庆(打工版) 工具 2026-01-25 21:22:31 1 回答 60 浏览 Postman里怎么断言返回的JSON字段值是否正确? 我在用Postman测试接口,想验证返回的JSON里某个字段的值是不是我预期的,但写了断言老是不生效,不知道哪里写错了。 比如接口返回的是{"status": "success", "code": 2... 启航 工具 2026-03-30 20:12:13 1 回答 106 浏览 Postman中怎么手动设置Cookie才能让请求带上正确的会话信息? 我用Postman测试一个需要登录态的接口,后端返回了Set-Cookie头,但后续请求好像没自动带上Cookie。我在Cookies管理器里看到域名是localhost,但实际请求发到的是127.0... 峻豪 Dev 工具 2026-03-27 01:53:20 1 回答 81 浏览 Postman发送请求后端收不到Vue传的参数? 我在用 Vue 写登录功能,前端用 axios 发 POST 请求,但后端用 Postman 测试时能收到参数,我本地开发却收不到,到底是哪儿出问题了? 我试过把 Content-Type 改成 ap... 西门桂霞 前端 2026-03-26 11:19:22
pm.test写法完全没问题,不会导致跳过。真正导致 Runner 跳过请求的,大概率是下面几种情况,我按发生频率给你排个序,你一个个对一下:
第一种:请求的前置脚本里调用了
pm.test.skip()或者return提前退出了脚本执行注意,不是测试脚本里跳过,是前置脚本(Pre-request Script)里如果执行了
return,整个请求就会被跳过。比如你写了这样的代码:或者更隐蔽一点:
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”里加一句:
3. 重新跑 Runner,看 Console 有没有输出这行日志
- 如果完全没输出,说明 Pre-request Script 根本没执行 → 基本是“Disabled”状态
- 如果输出了但后面没“Start test script”日志 → Pre-request Script 里提前 return/throw 了
- 如果 Pre-request Script 执行了,但请求没发出去 → 检查变量是否缺失
需要我帮你分析具体哪一步,你把那两个被跳过请求的 Pre-request Script(去掉敏感信息)发出来,我一眼就能看出问题。
我之前就遇到过一个同事的集合里某个请求被禁用了两周,他天天纳闷怎么少一个请求……
具体排查步骤:
先打开 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",这种提示比你猜靠谱多了。