Postman 使用教程 - API 接口自动化测试初探
本文首发:Postman 使用教程 - API 接口自动化测试初探 - 卡拉云
Postman 是一套 API 接口测试工具,它的强大在于灵活趁手的自动化接口测试流程,极大的提高了 API 测试效率。本教程将由浅入深,带领大家一起学习如何使用 Postman 进行接口测试及如何进行 API 接口自动化批量测试。
API 是什么?
API的英文即Application Programming Interface首字母的缩写。不要被这么长的单词吓到,直译过来的意思就是:程序之间的接口。我更倾向于把API理解为,程序之间的合约。有关 API 是什么及它的意义这里就不展开讲了,了解更多可看卡拉云博客之前的文章《API是什么: 一篇讲透API》
Postman 是什么?
Postman 是一款 API 开发协作工具,它可以帮助你测试和开发 API,Postman 提供了测试 API 的友好界面和功能,使用简单便捷,安全可靠。Postman 是 API 接口测试工具的 Top 3,因为它简单可靠又免费,目前有超过 800 万开发者用户使用。特别是 API 批量测试功能,在近几次的大版本更新中,用户体验得到了极大的提升。Postman 是每一位前后端开发者必掌握的开发工具。
扩展阅读:更多 API 测试工具选择可看这篇《最好用的七大顶级 API 接口测试工具》
接下来,我们来一起通过实践学习 Postman 从安装到 API 自动化接口测试的全过程,建议你上手跟随本教程一步一步操作,可更好理解 Postman 功能精髓。
一. 如何安装 Postman
前往 Postman 官网免费下载,安装非常傻瓜。Postman 支持 Windows、Mac 和 Linux,也可以直接跑在浏览器里,使用相当便捷。
二. Postman 功能概览
Postman 经过多次迭代,整个界面没有冗余功能,直接看主界面,Postman 主要功能一目了然。
-
「New」在这里创建请求、测试集合、环境,还可以创建 API 文档、Mock Server、API -
「Import」 导入功能可以导入测试集合、环境等信息 -
「HTTP Request」点击可查看请求选项,比如有GET, POST, COPY, DELETE 等,在 API 测试中,最常用等请求是 GET 和 POST -
「Request URL」 API 的链接,发送和接受请求的链接 -
「Save」 保持按钮,Postman 不会自动保存,需要我们手动点击保存按钮 -
「Request tab」请求标签卡,这里显示我们当前正在处理的请求 -
「Params」 这里可填入请求需要的参数,比如Key - Value -
「Auth」远程访问 API时,需要提交的身份认证信息,比如 username、password、token 等 -
「Headers」 请求头信息 -
「Body」 请求体信息,一般在 POST 中才会用到 -
「Pre-req」 在请求之前 先执行脚本 -
「Tests」可创建 Postman 测试断言,用来设置监测点自动化检测 API 是否达到预期 -
「Collections」 测试集合,类似树状结构的文件夹,放在同一个文件夹的 API 可一起进行批量测试、编辑和复制。 -
「History」测试的 log,可方便查询 Postman 对你的 API 进行了哪些操作 -
「Runner」 可以通过 Collection Runner 执行自动化测试,后文详细介绍 -
「My Workspace」创建工作区可与团队成员共享使用 -
「Invite」可邀请团队成员一起协同测试
三. 如何使用 Postman 处理 GET 请求
本教程使用模拟 API 工具 「JSONPlaceholder」进行 API 模拟操作。
https://jsonplaceholder.typicode.com/users
1.点击「+」新建一个请求
2.选择触发动作 GET
3.输入 API 地址:https://jsonplaceholder.typicode.com/users
4.点击「Send」测试开始
5.测试完成后,可看到状态 200,表示 API 联通并成功返回结果
6.GET API 返回的结果值 - JSON 文件,返回了 10 组数据
四. 如何使用 Postman 处理 POST 请求
接着我们新建一个 POST 请求,然后提交一组数据,数据如下:
[
{
"id": 11,
"name": "Kalacloud",
"username": "kalacloud",
"email": "super@kalacloud.com"
",
"address": {
"street": "xisanhuan",
"suite": "19",
"city": "beijing",
"zipcode": "100841",
"geo": {
"lat": "116.20",
"lng": "39.56"
}
},
"phone": "13977777777 x56442",
"website": "kalacloud.com",
"company": {
"name": "kalacloud",
"catchPhrase": "-",
"bs": "-"
}
}
]
1.新建一个请求标签
2.选择 POST 请求类型
3.输入 API 网址
4.点击 Body
5.选择 raw
6.选择 JSON 格式
7.填入上文的代码并点击测试
8.测试结果为 201 测试通过
9.POST 添加的内容已经完成,返回值 ID:11
五. 如何将请求参数化 - 全局变量、环境变量、集合变量
上面将的 GET
和 POST
只是常规 API 测试功能。接下来我们开始进入 API 自动化测试的部分,也是 Postman 的精华。自定义变量可以帮助我们在批量测试时,根据不同场景设定规则,让 Postman 根据规则自动测试一些列的测试项目。
我们先来看个变量样例:
1.可以看到原来的网址被{{kalacloud_url}}
所取代。
2.JSON 文件中数值被变量取代。
3.这是 Postman 的一个核心功能,数值变量化,在右上角的小眼睛里设置。
我们来看一下,Postman 三种常见的变量形式,以及如何定义变量
Postman 常用的三种变量形式
-
全局变量:全局变量一旦声明,即可应用到 Postman 中所有测试的 API 中。任何请求都可以直接使用全局变量,它的作用域是全局的。 -
环境变量:Postman 的环境变量可以理解为一组选项,当这组环境变量选项被选中时,才会生效,如上图中红3位置「卡拉云_API 测试 Demo」选项一样,选中时生效。 -
集合变量:集合变量是针对集合(Collections)生效的,一个集合下可能有 N 条 API 测试,集合变量可以一次修改集合下的所有变量数值。
以上三种变量的作用域从大到小为 全局 > 集合 > 环境,当三个变量形式同时作用于一个 API 测试条时,Postman 会优先使用最小作用域变量。
六. Postman 定义变量的方法
全局变量与环境变量设置
1.点击右上角的小眼睛进入变量设置页面
2.上面为环境变量设置,当选中环境变量时(小眼睛 icon 的左边进行选择)此测试应用环境变量。
3.这里可以设置全局变量,全局变量应用在所有 API 接口测试环境中。
集合变量设置
集合变量在集合的条目后面点击「...」选择编辑 → Variables 在这里进行设置。
变量设置与应用
上文中,我们设置了 {{kalacloud_url}}
为 https://jsonplaceholder.typicode.com
,设置 {{kalacloud_id}}
为 11
我们把下面的 JSON 填入 Postman 相应位置,看看是否可执行。
[
{
"id":" {{kalacloud_id}}",
"name": "Kalacloud",
"username": "kalacloud",
"email": "super@kalacloud.com"
}
]
1.选择刚刚设置好的环境变量 2.在网址和 JSON 中都可以使用全局变量及环境变量 3.执行后,返回 201 并且 ID 返回为 11,变量设置成功
七. 如何创建 Postman Tests - Postman 断言功能
Postman 可以在 Tests 中自动生成 JavaScript 校验代码协助我们验证结果,这与上面我们讲到的变量设置一样,断言功能,也是 API 接口自动化测试中重要的一环。
(1)Postman 断言概览
-
断言设置:Tests 选项卡 -
断言语言:JavaScript -
断言执行原理:在相应体数据返回后执行 -
断言结果查看: Test Results 选项中查看
有关断言的设置,我们一起操作一遍你就明白了。
(2)Postman 断言的实际应用
-
Postman 状态类断言
1.我们首先创建一个 GET 请求,然后点击 Postman 中 Tests 标签,进入断言设置。
2.我们可以在右侧已经预设好的断言代码,我们先点击「Status code: Code is 200」,可以看到预设的代码直接写入编辑框。
3.点击「Send」执行 GET,返回的断言可以在 Test Results 中看到,绿色的 PASS,说明执行成功。
-
Postman 结果比较类断言
我们再添加一条带有变量的 JavaScript 断言设置,比较预期结果和实际结果之间是否一致。
1.在 Tests 选项卡右侧选择「Response body:JSON value check」,我们来检测 ID 为 1 的返回值中,name
的值是否为 Leanne Graham
。
2.我们将「Your Test Name」替换为「检查 ID 为 1 的 name 返回值为 Leanne Graham」让这条测试的名字直接反应出我们想测试的内容。
3.使用jsonData[0].name
代替jsonData.value
,在刚刚的返回结果中,我们知道 ID 1 中的 name 值为 Leanne Graham
,这个结果是从 [0] 开始的。
4.检测返回值:在 to.eql()
中输入待检测值 "Leanne Graham"
5.代码如下,你可以直接复制到你的 Postman 中,跟随教程一起测试
pm.test("检查 ID 为 1 的 name 返回值为 Leanne Graham", function () {
var jsonData = pm.response.json();
pm.expect(jsonData[0].name).to.eql("Leanne Graham");
});
执行 GET 后,我们可以看到 Tests 的返回结果,ID 1. name 为 Leanne Graham 为 PASS
。此功能帮助我们比较了预设值与实际返回值是否一致,在自动化测试中十分有用。
八. 如何创建 Postman 测试集合
Postman 在这次升级之后,创建测试合集的步骤极大被简化了。创建测试集合只需要点击上图中的「+」,然后给集合重命名即可。
然后我们在合集中创建多个测试条目,方便我们之后按照集合自动化测试。
九. 如何使用 Runner 批量执行 - API 接口自动化测试雏型
1.点击需要批量运行的集合的「...」然后选择「Run collection」进入 Runner 设置页面
2.iterations 是指遍历测试的次数,这次测试我们设置为 3
3.Delay 是指测试之间的延迟时间,这次设置为 2000ms
4.测试数据,配合上文讲解的参数化功能,以达到自动化测试的目的
5.配置好之后,点击 Run 开始批量执行
点击 Run 之后,Postman 按照设定连续执行合集里的 API 测试,并进行 3 组测试。到这里,Postman API 接口批量自动化测试的雏型已经出来了。在未来更复杂的 Postman 自动化接口测试流程也是有以上这些功能点构成的,你现在已经掌握了 Postman 自动化接口测试方法。
十. 总结
本文从 GET / POST 功能开始讲起,然后详细讲解了 API 接口自动化测试所需要的几个功能特点,全局/环境/集合变量设置,测试断言,测试集合等,以及最后的自动化测试工具 Runner。这些功能共同构成了 Postman API 接口自动化测试功能。
接着推荐一下卡拉云,卡拉云是一套低代码开发工具,支持多种数据库及 API 接入。你不仅可以在卡拉云中测试 API ,还能直接把返回的结果映射到组件上,不用写一行代码,只需简单拖拽即可搭建属于你自己的后台工具。
上图为使用「卡拉云」调用金数据 API ,然后将返回结果直接映射到表格组件中。你仅需一步,即验证了 API 可用性,又直接把你正在搭的工具给作出来了。立即试用卡拉云,一分钟快速搭建属于你自己的 API 工具。
更多数据库相关教程可访问 卡拉云 查看。