Postman 已从 2013 年一个简单的 REST 客户端,发展成为全球超过 4000 万开发者使用的 API 开发协作平台。它覆盖了从设计、调试、测试到文档、监控的 API 全生命周期,成为连接前后端团队的“技术契约枢纽”。
一、产品概述与核心价值
1.1 Postman 是什么?
Postman 是一个功能强大的 API 开发和测试工具,被广泛应用于软件开发的各个阶段。它提供完整的图形化界面,让开发者可以轻松构建、发送和分析 HTTP/HTTPS、WebSocket、GraphQL 等协议的请求。
1.2 核心能力矩阵
| 能力维度 | 功能模块 | 核心价值 |
|---|---|---|
| API 生命周期管理 | 设计、调试、测试、监控、文档 | 覆盖 API 从开发到上线的全流程 |
| 多协议支持 | REST、GraphQL、WebSocket、gRPC | 适配从简单接口到复杂微服务架构 |
| 协作能力 | Workspace、版本控制、团队共享 | 提升团队协作效率 |
| 自动化测试 | Collection Runner、Newman、CI/CD 集成 | 实现自动化回归测试和持续集成 |
| 可观测性 | Monitor、响应时间分析、SLA 追踪 | 持续跟踪 API 可用性与性能指标 |
企业真实标准:给你一套项目接口文档 + 测试环境,能在 1 天内把所有接口录入 Postman、做好环境变量和 token 自动关联、写好断言、批量跑一遍并出报告——达到这个水平,完全满足企业接口测试岗位的要求。
二、核心功能全景速查
| 功能模块 | 核心能力 | 适用场景 | 关键操作 |
|---|---|---|---|
| 请求构建 | 支持 GET/POST/PUT/DELETE 等所有 HTTP 方法;Params / Body / Headers 配置 | 日常接口调试 | 选择方法 → 输入 URL → 配置参数 → 点击 Send |
| 环境变量 | 全局、环境、集合、数据、局部 5 级作用域 | 多环境切换(dev/staging/prod) | pm.environment.set("key", "value") |
| 预请求脚本 | 请求发送前执行的 JavaScript 脚本 | 动态生成签名、OAuth2.0 令牌、时间戳 | Pre-request Script 选项卡 |
| 测试断言 | 基于 pm 对象和 Chai 断言库 | 验证状态码、响应体、响应时间 | Tests 选项卡,pm.test(...) |
| 集合管理 | 按模块组织请求,可批量执行 | 项目管理、回归测试 | 创建 Collection → 添加 Folder → 添加 Request |
| Collection Runner | 按顺序批量执行集合中的请求 | 自动化回归测试 | Runner 窗口 → 选择集合 → Run |
| Newman | 命令行运行集合 | CI/CD 集成、无头测试 | newman run collection.json |
| Mock Server | 模拟 API 响应 | 前后端并行开发 | 基于 Collection 创建 Mock |
| API 文档 | 自动生成交互式文档 | 团队协作、对外发布 | Collection → Publish Docs |
| Monitor | 定时监控 API 可用性 | 生产环境健康检查 | 设置监控频率 + 告警规则 |
| 数据驱动测试 | CSV/JSON 文件导入测试数据 | 参数化测试、多用例覆盖 | Runner → 选择 Data File |
三、变量体系(自动化核心)
3.1 五级作用域与优先级
Postman 的变量系统是其自动化能力的核心骨架,优先级遵循就近原则:数据变量 > 环境变量 > 集合变量 > 全局变量 > 内置变量。
| 变量类型 | 作用范围 | 生命周期 | 典型用途 | 脚本 API |
|---|---|---|---|---|
| 全局变量 (Global) | 整个工作空间 | 持续存在 | 不可变的通用常量(谨慎使用) | pm.globals.set/get |
| 环境变量 (Environment) | 当前选中的环境 | 持续存在 | 区分 dev/staging/prod 的 base_url、认证信息 | pm.environment.set/get |
| 集合变量 (Collection) | 单个集合内 | 持续存在 | 通用秘钥、商品属性等业务通用配置 | pm.collectionVariables.set/get |
| 数据变量 (Data) | Runner/Newman 运行时 | 单次迭代 | 外部 CSV/JSON 文件导入的参数化数据 | pm.iterationData.get |
| 局部变量 (Local) | 单个请求生命周期 | 请求结束即销毁 | 临时计算值、中间变量 | pm.variables.set/get |
3.2 使用示例
// 环境变量:定义 base_url = https://api.dev.example.com
// 请求 URL 中使用 {{base_url}}/users
// 在 Pre-request Script 中动态设置变量
const timestamp = new Date().getTime();
pm.environment.set("timestamp", timestamp);
// 在 Tests 脚本中提取响应并存入变量
const jsonData = pm.response.json();
pm.globals.set("access_token", jsonData.data.token);
四、请求生命周期与脚本自动化
4.1 请求生命周期

4.2 Pre-request Script(预请求脚本)
在请求发送前执行,常用于:
| 典型应用 | 代码示例 |
|---|---|
| 动态生成时间戳 | pm.environment.set("timestamp", Date.now()) |
| 生成 HMAC-SHA256 签名 | 使用 CryptoJS 库计算签名 |
| 设置 OAuth2.0 令牌 | pm.request.headers.add({key: "Authorization", value: "Bearer " + token}) |
| 读取文件注入请求体 | 通过 pm.request.body 操作 |
4.3 Tests(测试断言脚本)
在收到响应后执行,基于 pm 对象和 Chai 断言库:
基础断言:
// 状态码断言
pm.test("状态码为200", function () {
pm.response.to.have.status(200);
});
// 响应时间断言
pm.test("响应时间小于200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
// 业务码断言
pm.test("业务码为0", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(0);
});
// 字段存在性断言
pm.test("响应包含user_id", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.data).to.have.property("user_id");
});
接口关联(JSON 提取器):
// 登录接口:提取 token 并存入全局变量
const jsonData = pm.response.json();
pm.globals.set("access_token", jsonData.data.token);
pm.globals.set("user_id", jsonData.data.user_id);
// 后续接口:使用 {{access_token}} 或 {{user_id}}
动态参数断言:
// 创建接口:使用动态时间戳作为参数
const times = Date.now();
pm.globals.set("times", times);
// 断言响应中包含该动态值
pm.test("检查响应中包含标签名", function () {
pm.expect(pm.response.text()).to.include("标签名" + times);
});
五、快捷操作速查表
5.1 通用操作
| 功能 | Windows/Linux | macOS |
|---|---|---|
| 发送请求 | Ctrl + Enter | Cmd + Enter |
| 保存请求 | Ctrl + S | Cmd + S |
| 打开新标签 | Ctrl + T | Cmd + T |
| 关闭标签 | Ctrl + W | Cmd + W |
| 切换标签 | Ctrl + Tab | Ctrl + Tab |
| 格式化 JSON | Ctrl + B | Cmd + B |
| 打开设置 | Ctrl + , | Cmd + , |
| 打开快捷键帮助 | Ctrl + / | Cmd + / |
5.2 请求与响应
| 功能 | Windows/Linux | macOS |
|---|---|---|
| 请求 URL 输入框聚焦 | Ctrl + L | Cmd + L |
| 发送并下载响应 | Ctrl + Alt + Enter | Cmd + Alt + Enter |
| 跳转到请求区域 | Ctrl + Alt + ↑ | Cmd + Alt + ↑ |
| 跳转到响应区域 | Ctrl + Alt + ↓ | Cmd + Alt + ↓ |
5.3 视图与窗口
| 功能 | Windows/Linux | macOS |
|---|---|---|
| 切换侧边栏 | Ctrl + Alt + 1 | Cmd + Alt + 1 |
| 切换双窗格视图 | Ctrl + Alt + V | Cmd + Alt + V |
| 新建请求窗口 | Ctrl + N | Cmd + N |
| 新建 Runner 窗口 | Ctrl + Shift + R | Cmd + Shift + R |
| 管理环境 | Ctrl + Alt + E | Cmd + Alt + E |
| 界面放大/缩小 | Ctrl + + / - | Cmd + + / - |
如需修改快捷键,路径:File > Settings > Keyboard Shortcuts
六、Mock Server 与并行开发
Postman 的 Mock Server 是前后端并行开发的利器,前端可针对模拟接口先行开发,后端再实现真实接口。
6.1 创建 Mock Server 步骤
-
基于已有 Collection 创建 Mock
-
为每个端点定义示例响应(状态码 + 响应体)
-
获取 Mock URL(如
https://{{mock_id}}.pstmn.io) -
前端针对 Mock URL 进行开发
-
后端实现真实接口后,替换
base_url环境变量即可无缝切换
6.2 Mock 响应模板示例
{
"request": {
"method": "GET",
"url": "/users/:id"
},
"response": {
"status": 200,
"body": "{\"id\": \"{{id}}\", \"name\": \"Mock User\", \"email\": \"mock@example.com\"}"
}
}
七、Newman 与 CI/CD 集成
Newman 是 Postman 的命令行工具,支持将集合测试集成到 CI/CD 流水线。
7.1 基础命令
# 安装 Newman
npm install -g newman
# 运行集合(带环境变量)
newman run collection.json -e environment.json
# 数据驱动测试
newman run collection.json -e environment.json -d data.csv
# 生成 HTML 报告
newman run collection.json --reporters html --reporter-html-export ./report.html
7.2 GitHub Actions 集成示例
- name: Run Postman tests
run: |
npm install -g newman
newman run collection.json --reporters jest --reporter-jest-output ./report.xml
八、常见问题与最佳实践
8.1 面试必备 5 项核心能力
| 编号 | 能力 | 说明 |
|---|---|---|
| 1 | 登录后自动带 Token | 通过接口关联 + 变量自动传递 |
| 2 | 接口间参数传递(关联) | 使用 JSON 提取器或正则提取器 |
| 3 | 会写 Tests 断言 | 状态码、业务码、字段验证 |
| 4 | 会批量运行 | Collection Runner + 数据驱动 |
| 5 | 会简单签名/sign | Pre-request Script 动态生成签名 |
8.2 最佳实践建议
| 实践项 | 说明 |
|---|---|
| 变量命名规范 | 采用 env_service_variable 格式(如 dev_auth_token) |
| 请求添加描述 | 说明接口用途、参数含义、成功/失败场景 |
| 断言分层 | 基础断言(状态码)放开头,业务断言按优先级排序 |
| 数据驱动测试 | 通过 CSV/JSON 导入测试数据,覆盖正常/异常/边界用例 |
| 测试用例命名 | 采用 模块_功能_状态 格式(如 user_login_success) |
| 定期导出文档 | 将 API 文档作为接口规范的补充材料 |
| 建立团队知识库 | 将常见问题整理为 Collection 注释 |
九、功能全景速查表
| 功能模块 | 核心能力 | 适用场景 |
|---|---|---|
| 请求构建 | GET/POST/PUT/DELETE、参数配置、请求头管理 | 日常接口调试 |
| 环境管理 | 多环境切换、变量级联覆盖 | 跨环境测试 |
| 预请求脚本 | 动态签名、令牌生成、时间戳构造 | 复杂前置逻辑 |
| 测试断言 | 状态码/业务码/字段/响应时间验证 | 接口正确性验证 |
| 集合管理 | 模块化组织、批量执行 | 项目管理和回归测试 |
| Collection Runner | 顺序执行、数据驱动、迭代控制 | 自动化回归测试 |
| Newman | 命令行运行、CI/CD 集成 | 无头测试、持续集成 |
| Mock Server | 模拟 API 响应 | 前后端并行开发 |
| API 文档 | 自动生成交互式文档 | 团队协作、对外发布 |
| Monitor | 定时监控、告警通知 | 生产环境健康检查 |
Postman 已从单纯的 API 客户端演变为完整的 API 开发协作平台,覆盖了从单个请求调试到自动化测试、Mock、文档、监控的全链路需求。掌握其核心功能,意味着能够在现代前后端分离架构与微服务治理体系中,高效完成日常接口验证、主导 API 治理体系建设,推动组织向标准化、自动化、可观测化的高质量交付范式跃迁。

387

被折叠的 条评论
为什么被折叠?



