软件测试接口测试从入门到精通:Postman入门到精通

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 发送第一个请求

步骤

  1. 打开Postman
  2. 点击左上角 + 新建请求
  3. 选择HTTP方法(GET)
  4. 输入URL:https://jsonplaceholder.typicode.com/posts/1
  5. 点击 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示例

  1. 选择 Bearer Token 类型
  2. 在Token框输入:eyJhbGciOiJIUzI1NiIs...
  3. Postman自动添加到Header:Authorization: Bearer eyJhbG...

5.5 环境变量和全局变量

为什么用变量

场景:开发环境、测试环境、生产环境的API地址不同

复制代码
开发环境:https://api-dev.example.com
测试环境:https://api-test.example.com
生产环境:https://api.example.com

不用变量:每次切换环境都要改URL

用变量:只需切换环境,URL自动变化

创建环境

  1. 点击右上角齿轮图标 → Manage Environments
  2. 点击 Add
  3. 设置变量:
变量名 初始值 当前值
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)

步骤

  1. 点击Collection右侧的 ...Run Collection
  2. 或使用底部工具栏的 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

  1. 点击左侧 +Mock Server
  2. 定义请求路径和响应
  3. 保存并获取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

  1. 右键Collection → Export
  2. 选择格式(Collection v2.1推荐)
  3. 保存为JSON文件

导入Collection

  1. File → Import
  2. 选择文件或粘贴URL
  3. 支持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命令行

课后练习 📝

  1. 实践题 :使用Postman调用 https://jsonplaceholder.typicode.com 的接口,完成GET获取文章列表、POST创建新文章、PUT更新文章、DELETE删除文章。
  2. 进阶题:创建一个Collection,实现登录→获取用户信息→更新用户的完整流程,使用环境变量传递token。
  3. 挑战题:使用Collection Runner + CSV文件,实现数据驱动的登录接口测试(测试多种用户名密码组合)。

5.15 下章预告

下一章我们将学习curl命令行工具,它是接口测试和调试的终极利器!


"Postman是接口测试的瑞士军刀,掌握它,你就拥有了测试任何API的能力。"

相关推荐
糖果店的幽灵2 小时前
软件测试接口测试从入门到精通:JMeter接口测试
软件测试·jmeter·接口测试·压力测试·性能测试
糖果店的幽灵3 小时前
软件测试接口测试从入门到精通:HTTP协议详解
软件测试·网络协议·接口测试·http协议·测试基础
糖果店的幽灵4 小时前
软件测试接口测试从入门到精通:curl命令行工具
linux·软件测试·接口测试·命令行·curl
墨香幽梦客12 小时前
API集成最佳实践:Postman+MuleSoft实现ERP与OA系统无缝对接
测试工具·postman
心软小念1 天前
2026软件测试高频面试题
软件测试·面试·职场和发展
学代码的真由酱1 天前
【自用】接口测试
接口测试·postman·测试·cookie·token鉴权
DrMaker1 天前
【无标题】
软件测试·python·测试工具·pyqt
努力的lpp1 天前
渗透主流工具完整参数手册(sqlmap、Nmap、Hydra、Dirsearch、Xray)
javascript·网络协议·测试工具·安全·http·工具
PhotonixBay2 天前
共聚焦显微镜测量铜导体表面粗糙度
测试工具·制造