05 Postman 入门到精通 - 接口测试瑞士军刀
🎯 本章目标:掌握Postman的安装配置、基础使用、高级功能,能够独立完成接口测试工作。
5.1 Postman 简介
什么是Postman
Postman 是一款流行的API开发协作平台,提供接口测试、文档生成、Mock服务、监控等功能。
为什么选择Postman
- 免费且功能强大
- 界面直观易用
- 支持多种协议
- 团队协作方便
- 自动化测试支持
- 丰富的生态系统
安装Postman
下载地址:https://www.postman.com/downloads/
支持平台:Windows、macOS、Linux、Web版(浏览器直接使用)
5.2 Postman 界面导览
- 顶部栏:新建按钮、环境选择器、搜索框
- 左侧栏:Collections(接口集合)、APIs(API定义)、Environments(环境变量)、History(请求历史)
- 中间区域:请求标签页、响应区域
- 底部栏:控制台、Runner
5.3 发送第一个请求
步骤
- 打开Postman
- 点击左上角 + 新建请求
- 选择HTTP方法(GET)
- 输入URL:
https://jsonplaceholder.typicode.com/posts/1 - 点击 Send
示例响应
json
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit..."
}
5.4 请求组件详解
URL和参数
https://api.example.com/users?page=1&size=20
↑ ↑ ↑
基础URL 路径 查询参数
在Postman中设置:
- Params 标签:添加查询参数(自动拼接到URL)
- Path Variables :路径变量
/users/:id
请求头(Headers)
| 常用Header | 说明 | 示例 |
|---|---|---|
| Content-Type | 请求体格式 | application/json |
| Authorization | 认证信息 | Bearer token123 |
| Accept | 期望响应格式 | application/json |
| User-Agent | 客户端标识 | PostmanRuntime/7.32.3 |
请求体(Body)
Postman支持多种Body类型:
- none:GET请求常用
- form-data:文件上传+表单
- x-www-form-urlencoded:普通表单提交
- raw:JSON/XML/Text
- binary:单文件上传
认证(Authorization)
- No Auth
- Bearer Token
- Basic Auth
- API Key
- OAuth 2.0
- Digest Auth
Bearer Token示例:
- 选择 Bearer Token 类型
- 在Token框输入:
eyJhbGciOiJIUzI1NiIs... - Postman自动添加到Header:
Authorization: Bearer eyJhbG...
5.5 环境变量和全局变量
为什么用变量
场景:开发环境、测试环境、生产环境的API地址不同
开发环境:https://api-dev.example.com
测试环境:https://api-test.example.com
生产环境:https://api.example.com
不用变量:每次切换环境都要改URL
用变量:只需切换环境,URL自动变化
创建环境
- 点击右上角齿轮图标 → Manage Environments
- 点击 Add
- 设置变量:
| 变量名 | 初始值 | 当前值 |
|---|---|---|
| baseUrl | https://api-dev.example.com |
https://api-dev.example.com |
| token |
使用变量
{{baseUrl}}/users → 自动替换为 https://api-dev.example.com/users
{{token}} → 自动替换为变量值
变量作用域
优先级:Data > Environment > Collection > Global
5.6 集合(Collection)管理
什么是Collection
Collection 是一组相关请求的集合,可以组织、共享、运行。
创建Collection
用户管理系统
├── 01 认证模块
│ ├── 登录
│ ├── 登出
│ └── 刷新Token
├── 02 用户模块
│ ├── 获取用户列表
│ ├── 获取用户详情
│ ├── 创建用户
│ ├── 更新用户
│ └── 删除用户
└── 03 订单模块
├── 创建订单
├── 获取订单列表
└── 取消订单
Collection的进阶功能
| 功能 | 说明 |
|---|---|
| Pre-request Script | 请求前执行的脚本 |
| Tests | 请求后执行的断言脚本 |
| Variables | 集合级别的变量 |
| Run | 批量运行集合中的所有请求 |
5.7 断言(Tests)
为什么需要断言
断言 是验证接口返回结果是否符合预期的自动化检查。
常用断言示例
javascript
// 1. 验证状态码
pm.test("状态码是200", function () {
pm.response.to.have.status(200);
});
// 2. 验证响应时间
pm.test("响应时间小于500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// 3. 验证JSON字段
pm.test("返回正确的用户名", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.name).to.eql("张三");
});
// 4. 验证数组长度
pm.test("返回10条数据", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data.list).to.have.lengthOf(10);
});
// 5. 验证包含某个字段
pm.test("响应包含token字段", function () {
pm.expect(pm.response.text()).to.include("token");
});
// 6. 验证Header
pm.test("Content-Type是JSON", function () {
pm.response.to.have.header("Content-Type");
pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json");
});
断言模板速查表
| 断言类型 | 代码示例 |
|---|---|
| 状态码 | pm.response.to.have.status(200) |
| 响应时间 | pm.expect(pm.response.responseTime).to.be.below(500) |
| JSON字段值 | pm.expect(jsonData.code).to.eql(0) |
| 字段存在 | pm.expect(jsonData).to.have.property("data") |
| 数组长度 | pm.expect(jsonData.list).to.have.lengthOf(5) |
| 包含字符串 | pm.expect(pm.response.text()).to.include("success") |
| 正则匹配 | pm.expect(pm.response.text()).to.match(/token/) |
5.8 Pre-request Script
什么是Pre-request Script
Pre-request Script 是在发送请求之前执行的JavaScript代码,常用于动态生成参数、设置变量等。
常用场景
javascript
// 1. 生成时间戳
pm.environment.set("timestamp", new Date().getTime());
// 2. 生成随机数
pm.environment.set("randomNum", Math.floor(Math.random() * 1000));
// 3. 生成UUID
const uuid = require('uuid');
pm.environment.set("uuid", uuid.v4());
// 4. 计算签名(示例)
const crypto = require('crypto-js');
const sign = crypto.MD5("appKey" + pm.environment.get("timestamp")).toString();
pm.environment.set("sign", sign);
5.9 批量运行(Collection Runner)
步骤
- 点击Collection右侧的 ... → Run Collection
- 或使用底部工具栏的 Runner
数据驱动测试
CSV数据文件示例:
username,password,expectedCode
admin,123456,0
admin,wrong,1001
,123456,1002
test,123,1003
在Tests中使用数据:
javascript
pm.test("验证返回码", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(parseInt(pm.iterationData.get("expectedCode")));
});
5.10 接口关联(数据传递)
场景
登录接口返回token,后续接口需要使用这个token。
实现步骤
Step 1:登录接口的Tests中提取token
javascript
// 从响应中提取token
var jsonData = pm.response.json();
pm.environment.set("auth_token", jsonData.data.token);
Step 2:后续接口使用token
Authorization: Bearer {{auth_token}}
5.11 Mock Server
什么是Mock Server
Mock Server 是模拟API服务器,当后端接口还没开发完成时,可以先模拟响应进行前端/测试开发。
创建Mock Server
- 点击左侧 + → Mock Server
- 定义请求路径和响应
- 保存并获取Mock URL
示例
Mock URL: https://xxx.mock.pstmn.io
请求: GET /api/users
响应:
{
"code": 0,
"data": [
{"id": 1, "name": "Mock用户1"},
{"id": 2, "name": "Mock用户2"}
]
}
5.12 导入和导出
导出Collection
- 右键Collection → Export
- 选择格式(Collection v2.1推荐)
- 保存为JSON文件
导入Collection
- File → Import
- 选择文件或粘贴URL
- 支持Swagger/OpenAPI导入
命令行运行(Newman)
bash
# 安装Newman
npm install -g newman
# 运行Collection
newman run collection.json -e environment.json
# 生成HTML报告
newman run collection.json -r html --reporter-html-export report.html
5.13 Postman 最佳实践
命名规范
✓ GET /users - 获取用户列表
✓ POST /users - 创建用户
✗ 获取用户列表
✗ 接口1
变量命名
✓ baseUrl, authToken, userId
✗ url, token, id
断言规范
javascript
// 好的断言:描述清晰
pm.test("登录成功后返回有效的JWT token", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(0);
pm.expect(jsonData.data.token).to.not.be.empty;
pm.expect(jsonData.data.token).to.match(/^eyJ/);
});
// 差的断言:描述不清
pm.test("test1", function () {
pm.expect(pm.response.json().code).to.eql(0);
});
5.14 本章小结
Postman核心功能
- 基础功能:发送请求、查看响应、保存请求
- 变量系统:环境变量、全局变量、集合变量
- 断言测试:状态码验证、响应时间、JSON字段
- 高级功能:Pre-request Script、Collection Runner、Mock Server、Newman命令行
课后练习 📝
- 实践题 :使用Postman调用
https://jsonplaceholder.typicode.com的接口,完成GET获取文章列表、POST创建新文章、PUT更新文章、DELETE删除文章。 - 进阶题:创建一个Collection,实现登录→获取用户信息→更新用户的完整流程,使用环境变量传递token。
- 挑战题:使用Collection Runner + CSV文件,实现数据驱动的登录接口测试(测试多种用户名密码组合)。
5.15 下章预告
下一章我们将学习curl命令行工具,它是接口测试和调试的终极利器!
"Postman是接口测试的瑞士军刀,掌握它,你就拥有了测试任何API的能力。"