Postman 测试 API

Postman 是目前最流行的 API 开发和测试工具,拥有友好的图形界面和强大的功能。无论是手动测试、自动化测试,还是集成到 CI/CD 流程,Postman 都能胜任。本章将带你全面掌握使用 Postman 测试 API 的各种技巧。

1. Postman 简介

Postman 最初是一个 Chrome 扩展,现已发展成跨平台的独立应用。它提供了请求构建、响应查看、集合管理、环境变量、测试脚本、文档生成等丰富功能。对于开发者来说,Postman 不仅用于调试接口,也是团队协作和自动化测试的利器。

2. 安装与界面概览

访问 Postman 官网 下载对应操作系统的版本并安装。安装后首次启动,可能需要登录或注册账号(可以跳过)。

Postman 的主要界面区域包括:

  • 左侧边栏:集合、环境、API 文档、历史记录等。
  • 中间工作区:请求构建区(输入 URL、选择方法、添加参数、头信息、请求体)。
  • 右侧响应区:显示服务器返回的状态码、响应体、头信息、测试结果。
  • 顶部工具栏:保存、导出、导入、设置等。

3. 构建第一个请求

打开 Postman,点击 NewHTTP Request 创建一个新请求。

3.1 发送 GET 请求

输入请求 URL(例如 https://jsonplaceholder.typicode.com/posts),选择 GET 方法,点击 Send 按钮。下方将显示响应状态码、响应时间和响应体。

你可以在 Params 标签页添加查询参数,例如添加 userId=1,URL 会自动变为 https://jsonplaceholder.typicode.com/posts?userId=1

3.2 发送 POST 请求

新建请求,方法选 POST,URL 为 https://jsonplaceholder.typicode.com/posts。在 Body 标签页选择 rawJSON 格式,输入 JSON 数据:

{
  "title": "foo",
  "body": "bar",
  "userId": 1
}

点击 Send,服务器应返回创建的资源,状态码为 201。

4. 请求参数详解

  • Params:用于添加 URL 查询参数,Postman 会自动编码。
  • Authorization:支持多种认证方式(Bearer Token、Basic Auth、OAuth 等),方便测试需要认证的接口。
  • Headers:设置请求头,如 Content-TypeAccept 等。Postman 会自动添加一些默认头。
  • Body:请求体格式支持 form-data、x-www-form-urlencoded、raw (JSON/XML/文本)、binary 等。

5. 环境变量与全局变量

变量使得在多个请求之间复用配置变得容易,例如基础 URL、认证令牌等。

5.1 创建环境

点击左侧 Environments,点击 + 创建一个新环境,例如命名为 Development。添加变量,如 base_url 值为 https://jsonplaceholder.typicode.comapi_key 值为 your-key

在请求中,使用双大括号引用变量:{{base_url}}/posts

从右上角环境下拉框选择 Development,变量即生效。

5.2 全局变量

全局变量在所有环境中可用。可以在 EnvironmentsGlobals 中设置。

5.3 动态变量

Postman 内置了一些动态变量,如 {{$timestamp}}{{$randomInt}}{{$guid}},可以在请求体或参数中使用。

6. 测试脚本与断言

Postman 允许在请求发送前后执行 JavaScript 代码,实现断言、设置变量、调试等。测试脚本写在 Tests 标签页,在收到响应后执行。

6.1 常用断言语法

Postman 提供了 pm 对象和 Chai.js 断言库。例如:

// 验证状态码是否为 200
pm.test("状态码为 200", function () {
    pm.response.to.have.status(200);
});

// 验证响应体包含某个字段
pm.test("响应包含 userId", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property('userId');
});

// 验证响应时间小于 500ms
pm.test("响应时间小于500ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(500);
});

6.2 设置环境变量

可以在测试脚本中动态更新变量,用于后续请求(如保存 token):

const jsonData = pm.response.json();
pm.environment.set("token", jsonData.token);

或清除变量:pm.environment.unset("temp");

7. 集合与文件夹组织

集合(Collection)是一组相关请求的容器,可以包含文件夹(Folder)进一步分类。集合支持共享、导出和运行。

7.1 创建集合

点击左侧 Collections 旁的 +,命名集合,例如 “My API Tests”。然后将请求保存到集合中(点击 Save 按钮)。

7.2 集合预请求脚本和测试脚本

集合级别可以设置 Pre-request Script(在集合内每个请求之前执行)和 Tests(每个请求之后执行),实现通用逻辑。

8. 运行集合与查看报告

点击集合右侧的 Run 按钮,打开 Collection Runner。可以配置运行顺序、迭代次数、延迟等。运行结束后会生成详细的测试报告,显示每个请求的通过/失败情况、断言结果。

9. 使用数据文件进行参数化

在 Collection Runner 中,可以上传 CSV 或 JSON 文件作为数据源,每次迭代使用一行数据。这对于测试不同输入组合非常有用。

9.1 准备数据文件

例如创建一个 users.csv

username,password
user1,pass1
user2,pass2

9.2 在请求中使用变量

在请求的字段中引用 {{username}}{{password}}

9.3 运行集合时加载数据文件

在 Collection Runner 中点击 Select File,选择 CSV 文件,设置迭代次数(可以自动按行数)。运行后每次迭代会取一行数据。

10. 集成 CI/CD - Newman

Newman 是 Postman 的命令行工具,可以将集合运行集成到 CI 流程(如 Jenkins、GitLab CI)。

10.1 安装 Newman

前提已安装 Node.js,执行:

npm install -g newman

10.2 导出集合与环境

在 Postman 中,点击集合右侧 ...Export 导出为 JSON 文件。同样导出环境文件。

10.3 使用 Newman 运行

newman run MyCollection.json -e DevEnvironment.json --reporters cli,json --reporter-json-export testResults.json

Newman 支持多种报告格式(cli、json、html 等)。如果使用数据文件,添加 -d data.csv

在 CI 脚本中可以根据退出码判断测试是否通过。

11. 最佳实践

  • 使用环境变量管理不同环境(开发、测试、生产),避免硬编码 URL 和凭据。
  • 为每个请求编写断言,确保接口的正确性和稳定性。
  • 将相关请求组织到集合和文件夹中,便于维护和运行。
  • 利用集合级别的脚本 实现通用逻辑(如设置公共头、处理认证)。
  • 使用数据文件进行边界测试,提高测试覆盖率。
  • 将集合和环境文件纳入版本控制(如 Git),方便团队协作。
  • 在 CI 中自动运行 Newman,确保每次代码变更不会破坏 API。
  • 定期检查测试运行报告,及时修复失败的测试。

12. 常见问题

  • 请求时出现 SSL 证书错误:可以在 Settings 中关闭 SSL 验证(仅开发环境)。
  • 变量未生效:检查当前是否选择了正确的环境,变量名拼写是否正确。
  • 断言语法错误:查看 Postman 控制台(View → Show Postman Console)查看错误日志。
  • Newman 运行时找不到环境变量:确保环境文件已正确导出,路径正确。
总结: Postman 是测试 RESTful API 的强大工具。通过本章学习,你应能熟练使用 Postman 构建请求、管理环境、编写断言、运行集合,并将测试集成到自动化流程中。良好的 API 测试实践能显著提高应用质量和开发效率。