Postman预请求脚本执行顺序为集合级→文件夹级→请求级,且每个请求前均完整执行该链路;集合脚本非仅初始化一次,而是每次请求前重复运行,依赖环境变量传递数据,变量不自动继承。

集合级 Pre-request Script 总是比请求级脚本先执行,但不是“只执行一次”——它会在每个请求前都运行一遍。
集合脚本和请求脚本的执行顺序怎么判断
Postman 按作用域层级决定执行先后:集合 → 文件夹 → 请求。同一层级下,Pre-request Script 一定在请求发出前执行,Tests 一定在收到响应后执行。
- 哪怕你只运行单个请求(非 Runner),只要它属于某个集合,集合的
Pre-request Script就会先跑 - 文件夹中的请求会额外触发该文件夹的
Pre-request Script,再触发请求自身的 - 执行不是“全局初始化一次”,而是“每个请求都走一遍完整链路”
为什么改了集合脚本,某些请求却没生效
常见原因是脚本里修改了环境变量或全局变量,但后续请求没读取或覆盖了这些值。
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
-
pm.environment.set()和pm.globals.set()写入后,必须在目标请求中用pm.environment.get()显式读取 - 如果请求自身
Pre-request Script也调用了pm.environment.set("token", ...),会覆盖集合脚本设的值 - 注意:集合脚本和请求脚本共享同一个 JS 执行上下文,但变量不自动传递;靠环境/全局变量中转
postman.setNextRequest() 会打乱默认顺序吗
会,但它只影响 Runner 中的请求调度,不影响脚本本身的执行时机。
-
postman.setNextRequest("下一个请求名")在Tests脚本里写才有效,Pre-request Script里写无效 - 它不改变当前请求的脚本执行顺序(比如集合脚本仍会在当前请求前执行),只决定“之后跑哪个请求”
- 循环逻辑容易失控:如果忘了加
if条件判断,postman.setNextRequest()可能导致无限重试
真正容易被忽略的是:集合脚本看似“顶层”,实则每次都在重复执行;如果你在里面做耗时操作(比如生成 RSA 签名、读取大文件),性能损耗会随请求量线性放大。
















