软件测试接口测试从入门到精通: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的能力。"

相关推荐
程序员杰哥5 小时前
接口自动化测试项目框架详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
灵翼飞航科技有限公司1 天前
2026款WF-EN系列多功能发动机测试台(适用DLE、林巴赫、Rotax等发动机)
功能测试·测试工具·无人机
程序员龙叔18 天前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
goldenrolan18 天前
A公司物料替代测试系统 v1.7:从需求到 exe/apk 的 AI 辅助全链路实践
android·自动化测试·软件测试·python·ai
Raina测试18 天前
欢迎来到《Raina 测试学习指南》博客✨ | Raina测试学习指南
软件测试·ai测试
程序员小远18 天前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
goldenrolan18 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
LT101579744418 天前
2026年Web自动化测试工具选型指南:多浏览器兼容解决方案
前端·测试工具·自动化
糖果店的幽灵18 天前
软件测试接口测试从入门到精通:接口测试CI_CD集成
软件测试·ci/cd·接口测试