Postman Collection Runner 为什么跳过我的测试用例? 依甜 提问于 2026-02-24 10:11:20 阅读 38 工具 我在 Postman 里用 Collection Runner 跑一组接口,但明明有 5 个请求,结果只跑了 3 个,另外两个直接被跳过了,状态显示是“skipped”。 我检查了前置脚本和测试脚本,没发现明显错误。也试过单独运行那两个请求,都能正常发送和返回。是不是哪里设置错了?比如环境变量没传对? 我的测试脚本里用了 pm.test("Status code is 200", () => pm.response.to.have.status(200));,应该不会导致跳过吧? Postman 我来解答 赞 2 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 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(去掉敏感信息)发出来,我一眼就能看出问题。 我之前就遇到过一个同事的集合里某个请求被禁用了两周,他天天纳闷怎么少一个请求…… 回复 点赞 1 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",这种提示比你猜靠谱多了。 回复 点赞 3 2026-02-24 10:12 加载更多 相关推荐 1 回答 23 浏览 Postman Collection Runner 里怎么在每次迭代后清空环境变量? 我在用 Postman 的 Collection Runner 做批量测试,每个请求都依赖上一个的响应数据,但发现环境变量会残留到下一次迭代,导致结果混乱。试过在 Tests 里用 pm.enviro... 新艳 工具 2026-02-24 14:32:20 1 回答 14 浏览 Postman Collection Runner 里怎么获取上一个请求的响应数据? 我在用 Postman 的 Collection Runner 跑一组接口,第二个请求需要带上第一个请求返回的 token,但不知道怎么在 Runner 里把前一个响应的数据传给下一个请求。 我试过在... ლ素平 工具 2026-02-26 23:03:18 2 回答 37 浏览 Postman Data Driven测试时变量替换不生效怎么办? 在用Postman做数据驱动测试时遇到了奇怪的问题,明明在集合变量里设置了username和password,但在测试用例执行时请求体里的变量还是原样显示成{{username}}。我按照文档把JSO... 上官志丹 工具 2026-01-28 18:52:31 1 回答 71 浏览 为什么Postman集合里的环境变量在循环请求时没生效? 我在用Postman集合测试接口时,给集合绑定了环境变量,但在循环发送请求时发现变量值没被替换,直接显示成{{var_name}}。比如我设置了baseURL变量,但请求地址还是原样。 尝试过在集合设... 庆庆(打工版) 工具 2026-01-25 21:22:31 1 回答 3 浏览 Postman 发送 POST 请求时 HTML 表单数据怎么传? 我在用 Postman 测试一个登录接口,后端是接收 HTML 表单格式的 POST 数据(Content-Type: application/x-www-form-urlencoded),但我试了好... ლ玉英 前端 2026-03-04 03:19:28 2 回答 9 浏览 Postman团队协作时怎么同步接口文档和环境变量? 我们团队用Postman做API测试,但每次有人改了接口或环境变量,其他人经常不知道,导致本地测试出错。试过用Workspace共享,但有时候更新不及时,或者成员没点“Pull Changes”。有没... 端木朝阳 工具 2026-03-01 18:54:23 1 回答 24 浏览 Postman里怎么正确发送GraphQL请求? 我最近在用Postman测试我们后端的GraphQL接口,但一直返回400错误。我查了文档说要设置Content-Type为application/json,body里放query字段,但还是不行。是... UX俊荣 工具 2026-02-27 12:24:20 1 回答 18 浏览 Postman怎么发送带Token的请求?Vue里能拿到,但Postman总401 我在Vue里调接口能正常带上Authorization头,但用Postman测试同一个接口总是返回401,是不是我Header写错了? 这是我在Vue组件里的请求代码: <script> ... 萌新.梓宸 前端 2026-02-25 11:17:18 2 回答 28 浏览 Postman测试脚本里怎么断言响应时间不超过500ms? 我在Postman里写Tests脚本,想确保接口响应时间别太慢,但不确定怎么正确获取和断言这个值。 试过用pm.response.responseTime,但好像不对?控制台报错说undefined。... Mc.琪帆 工具 2026-02-24 11:12:18 2 回答 45 浏览 GitHub Actions自托管Runner为什么无法连接到我的EC2实例? 我在AWS EC2上按官方文档安装了自托管Runner,但启动后状态一直是"Connecting"。尝试过开放22端口和检查系统日志,但日志只显示Runner process exited with ... 开发者丽丽 工具 2026-02-19 18:52:26
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",这种提示比你猜靠谱多了。