接口测试实战教程(Postman版):从多个级接口测试

来源:千锋教育
发布时间:2026-05-10 06:09:31

千锋教育品牌logo

01 为什么接口测试是测试工程师的“生死线”

不懂接口测试,等于测试只做了一半。

先看一个真实场景:某电商项目,前端页面完美运行,但用户下单时总是报错。前端开发查了3天,最后发现是后端接口返回的数据格式不对。这就是典型的“接口断层”——前端和后端各自为政,问题出在连接处。

接口测试的价值就在于此:在UI出现之前,提前发现服务端的问题。

数据说话:

  • ►接口测试能覆盖80%以上的业务逻辑错误
  • ►接口层发现的Bug,修复成本是UI层的1/5
  • ►接口测试自动化后,回归测试时间从4小时压缩到15分钟

Postman作为接口测试的“瑞士军刀”,核心能力就三个:

1. 发送HTTP请求(GET、POST、PUT、DELETE)

2. 验证响应数据(状态码、JSON结构、字段值)

3. 串联测试流程(变量传递、断言链)

一个测试团队,如果连Postman都不会用,项目质量就是空中楼阁。

02 Postman实战:从安装到第一个接口测试

工具只是武器,会用的才是战士。

2.1 环境准备

下载Postman(免费版即可),安装后打开界面。无需注册也能用,但建议注册账号同步数据。

2.2 第一个接口测试:GET请求

假设我们要测试一个公开API:https://jsonplaceholder.typicode.com/posts/1

操作步骤:

1. 点击“New” -> “HTTP Request”

2. 选择方法为“GET”

3. 输入URL:https://jsonplaceholder.typicode.com/posts/1

4. 点击“Send”

响应结果:

json
{

"userId": 1,

"id": 1,

"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",

"body": "quia et suscipit..."

}

2.3 添加断言验证

在“Tests”标签页写JavaScript断言:

javascript
pm.test("状态码是200", function () {

pm.response.to.have.status(200);

});

pm.test("响应时间小于500ms", function () {

pm.expect(pm.response.responseTime).to.be.below(500);

});

pm.test("返回数据包含id字段", function () {

var jsonData = pm.response.json();

pm.expect(jsonData).to.have.property('id');

});

点击“Send”后,看“Test Results”标签页,3个断言全部通过。

2.4 POST请求:创建数据

测试添加新帖子的接口:

text
URL: https://jsonplaceholder.typicode.com/posts

Method: POST

Headers: Content-Type: application/json

Body (raw JSON):

{

"title": "接口测试实战",

"body": "这是Postman的测试数据",

"userId": 1

}

断言验证:

javascript
pm.test("创建成功,状态码201", function () {

pm.response.to.have.status(201);

});

pm.test("返回数据包含标题", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.title).to.eql("接口测试实战");

});

> 一个接口,一套断言,一次测试,胜过十次手动点击。

03 项目实战:模拟真实电商接口测试

实战才是检验技术的唯一标准。

3.1 项目背景

模拟一个电商平台接口,包含:

  • ►用户登录:POST /api/login
  • ►获取商品列表:GET /api/products
  • ►创建订单:POST /api/orders
  • ►查询订单:GET /api/orders/{id}

3.2 环境变量配置

1. 点击左侧“Environments”

2. 创建新环境“电商测试环境”

3. 添加变量:

  • ►base_url = http://localhost:3000
  • ►token = (空,登录后自动填充)
  • ►order_id = (空,创建订单后自动填充)

3.3 用户登录接口测试

请求配置:

text
Method: POST

URL: {{base_url}}/api/login

Body (raw JSON):

{

"username": "test_user",

"password": "123456"

}

Tests脚本:

javascript
pm.test("登录成功", function () {

pm.response.to.have.status(200);

var jsonData = pm.response.json();

pm.expect(jsonData).to.have.property('token');

// 将token保存到环境变量

pm.environment.set("token", jsonData.token);

});

3.4 获取商品列表(带Token验证)

请求配置:

text
Method: GET

URL: {{base_url}}/api/products

Headers:

Authorization: Bearer {{token}}

Tests脚本:

javascript
pm.test("获取商品列表成功", function () {

pm.response.to.have.status(200);

var jsonData = pm.response.json();

pm.expect(jsonData).to.be.an('array');

pm.expect(jsonData.length).to.be.above(0);

// 验证商品结构

pm.expect(jsonData[0]).to.have.property('id');

pm.expect(jsonData[0]).to.have.property('name');

pm.expect(jsonData[0]).to.have.property('price');

});

3.5 创建订单接口(关联测试)

请求配置:

text
Method: POST

URL: {{base_url}}/api/orders

Headers:

Authorization: Bearer {{token}}

Content-Type: application/json

Body:

{

"product_id": 1,

"quantity": 2,

"address": "北京市朝阳区测试地址"

}

Tests脚本:

javascript
pm.test("创建订单成功", function () {

pm.response.to.have.status(201);

var jsonData = pm.response.json();

pm.expect(jsonData).to.have.property('order_id');

// 保存订单ID供后续查询使用

pm.environment.set("order_id", jsonData.order_id);

});

pm.test("订单金额计算正确", function () {

var jsonData = pm.response.json();

// 假设单价100,数量2,总价应为200

pm.expect(jsonData.total_amount).to.eql(200);

});

3.6 查询订单接口(数据依赖)

请求配置:

text
Method: GET

URL: {{base_url}}/api/orders/{{order_id}}

Headers:

Authorization: Bearer {{token}}

Tests脚本:

javascript
pm.test("查询订单成功", function () {

pm.response.to.have.status(200);

var jsonData = pm.response.json();

pm.expect(jsonData.order_id).to.eql(parseInt(pm.environment.get("order_id")));

pm.expect(jsonData.status).to.eql("pending");

});

> 变量传递+数据关联,让单接口测试变成业务流程验证。

04 高级技巧:集合测试与数据驱动

一个接口测试是点,集合测试就是面。

4.1 创建测试集合

1. 点击“Collections” -> “New Collection”

2. 命名为“电商接口测试套件”

3. 将上述4个接口依次添加进集合

4. 设置执行顺序:登录 -> 获取商品 -> 创建订单 -> 查询订单

4.2 数据驱动测试(CSV文件)

创建test_data.csv:

csv
username,password,product_id,quantity,expected_total

test_user,123456,1,2,200

test_user,123456,2,1,150

test_user,123456,3,3,450

在集合的“Pre-request Script”中读取数据:

javascript
// 从CSV读取当前行数据

const username = pm.iterationData.get("username");

const password = pm.iterationData.get("password");

// 动态设置请求参数

pm.variables.set("login_username", username);

pm.variables.set("login_password", password);

运行集合时选择“Run with data file”,导入CSV文件,设置迭代次数为3。

4.3 批量断言与报告

在集合的“Tests”标签添加全局断言:

javascript
// 统一检查响应时间

pm.test("响应时间不超过2秒", function () {

pm.expect(pm.response.responseTime).to.be.below(2000);

});

// 统一检查状态码

pm.test("状态码为2xx", function () {

pm.expect(pm.response.code).to.be.oneOf([200, 201, 204]);

});

运行完成后,点击“Run Results”查看详细报告,包括:

  • ►通过/失败数量
  • ►每个接口的响应时间
  • ►断言失败的具体信息

4.4 集成CI/CD(Newman命令行)

安装Newman:

bash
npm install -g newman

导出集合和环境变量为JSON文件,运行命令:

bash
newman run 电商接口测试套件.postman_collection.json \

-e 电商测试环境.postman_environment.json \

-d test_data.csv \

-r cli,json,htmlextra

生成HTML测试报告,直接集成到Jenkins、GitLab CI等工具中。

> 数据驱动+CI/CD,让接口测试从“手动点”变成“自动跑”。

05 避坑指南:接口测试常见的5个致命错误

错误不可怕,可怕的是不知道错在哪里。

错误1:忽略请求头配置

现象:接口返回415 Unsupported Media Type

原因:POST请求没设置Content-Type

解决:始终检查Headers,特别是Content-Type和Authorization

错误2:硬编码测试数据

现象:测试数据写死在脚本里,换环境就要改代码

原因:没有使用变量和环境

解决:所有URL、Token、ID都用{{变量}}引用

错误3:断言过于简单

现象:只检查状态码200,忽略业务逻辑

原因:认为“响应成功=测试通过”

解决:至少验证3点:状态码、响应结构、关键字段值

错误4:忽略数据依赖

现象:创建订单后,查询订单时ID不存在

原因:没有在创建接口中保存ID到变量

解决:用pm.environment.set()传递数据

错误5:不做异常测试

现象:只测试正常流程,不测边界值

原因:认为“正常能跑就行”

解决:至少测试3种异常:无效Token、参数缺失、负数输入

一个异常场景没覆盖,可能就是一个线上故障。

---

接口测试不是终点,是质量保障的起点。

Postman给你武器,实战教你战术,但真正决定胜负的,是你对质量的态度。

记住:每一次接口测试,都是在为用户的体验买单。

想系统学习软件测试技术干货?

千锋教育软件测试技术干货课程,零基础入门,企业级项目实战,高薪就业,一站式搞定!

了解课程详情
声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • 接口测试实战教程(Postman版):从多个级接口测试
  • 30秒搭建测试环境,效率提升较高:Docker让环境管理不再折磨测试人
  • 面试官问“测试一个水杯”,较高的人答错——测试用例设计方法在面试中的真实打法
  • 30秒搭建测试环境,效率提升较高:Docker让环境管理不再折磨测试人
  • 为什么“点一下”比“写三天”更赚钱?内容形式的降维打击
  • 接口测试实战教程(Postman版):从多个级接口测试