文件夹级Tests脚本需右键文件夹→Edit Folder→Tests页签编写,仅对当前文件夹内直接子请求生效,每请求响应后执行一次,不继承子文件夹,不可访问其他请求响应数据。

Postman文件夹级Tests脚本怎么加
直接在文件夹上右键 → Edit Folder → 切换到 Tests 页签,粘贴或编写 JavaScript 即可。不是点开某个请求再操作,也不是在集合根目录下写——脚本必须挂载到具体文件夹节点上才生效。
常见错误现象:Tests 页签是灰色不可编辑的,或者保存后运行没反应。原因通常是:还没真正进入「编辑文件夹」模式(只是点了文件夹名),或者该文件夹属于未保存的临时结构(比如刚拖拽进来但没点 Save)。
- 必须先确保文件夹已保存(右键文件夹 → Edit Folder → 点击底部 Update)
- 脚本内容不会自动继承给子文件夹或子请求,只对当前文件夹内所有直接子请求生效
- 如果文件夹里嵌套了其他文件夹,那些子文件夹需单独配置自己的
Tests
文件夹级Tests脚本的执行时机和范围
它在该文件夹下的每个请求收到响应后立即执行一次,不是只跑一遍,而是「每请求一执行」。也就是说,如果你的文件夹里有 5 个请求,运行整个集合时,这段 Tests 会被执行 5 次,每次作用于对应请求的 pm.response。
执行顺序严格遵循:Collection-level Tests → Folder-level Tests → Request-level Tests。若三者都写了同名断言(比如都校验 status code),最终 Test Results 面板会显示全部结果,但失败项以最早触发的为准(即 Collection 层失败,后续不会继续执行 Folder 和 Request 层的 Tests)。
- 无法访问其他文件夹或集合外的请求响应数据(
pm.response始终绑定当前正在处理的那个请求) - 可以读取并修改环境变量(
pm.environment.set()),但不能修改全局变量(pm.globals需 Collection 级权限) - 若需跨请求传递数据(如 A 请求返回 token,B 请求要用),必须在 A 的
Tests中设变量,在 B 的请求体/Headers 中用{{variable_name}}引用
为什么用文件夹级Tests而不是每个请求都写一遍
当一组请求共享相同校验逻辑时——比如全部要求 Content-Type: application/json、响应体必须含 "code": 0、且 responseTime ——文件夹级 Tests 能避免重复粘贴,也便于统一维护。一旦规则调整,改一处就行。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
但要注意:它不适用于差异化断言。例如登录接口要校验 token 字段,而登出接口根本不返回 token,那强行塞进同一文件夹的 Tests 会导致后者报错(Cannot read property 'token' of undefined)。
- 适合场景:模块内接口共性约束(如统一错误码结构、必含字段、性能阈值)
- 不适合场景:每个接口预期响应结构差异大、或需要提取不同字段做后续请求参数
- 调试技巧:在
Tests开头加console.log(pm.request.url.toString()),能快速确认当前执行的是哪个请求
常见断言写法与易错点
文件夹级 Tests 本质仍是 JavaScript,调用的是 Postman 的 pm.* API。最常踩的坑是把请求级写法直接搬过来却忽略上下文——比如 pm.test() 必须配 pm.expect() 或 pm.response.to.be.*,光写 console.log() 不算断言,也不会出现在 Test Results 中。
正确示例(校验所有响应 JSON 含 code 字段且为数字):
pm.test("Response has numeric 'code' field", function () {
const jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('code');
pm.expect(jsonData.code).to.be.a('number');
});
- 错误写法:
if (jsonData.code !== 0) throw new Error("code not zero")—— 这不会被识别为断言,也不会计入失败统计 - JSON 解析失败时(如返回 HTML 错误页),
pm.response.json()会直接报错中断脚本,建议加 try/catch 或先用pm.response.headers.get("Content-Type")判断类型 - 断言中不要用
pm.variables.get()读取未定义变量,否则整个脚本静默失败(控制台无提示,但Test Results显示 0/0)
文件夹级 Tests 是组织批量断言最实用的粒度,但它既不是万能胶水,也不是透明代理——它的作用域、执行时机和错误传播方式,都得按实际请求流去验证,而不是凭经验“应该没问题”。










