postman工具
学习目标
- 安装postman接口测试工具
- 注册postman账号
- 掌握postman基本操作
- 掌握postman参数设置
- 掌握postman断言脚本
- 掌握postman前置脚本
1. postman介绍
- Postman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流
- Postman由谷歌公司研发,以前只是谷歌浏览器的一个插件,后发布了客户端。来自官方数据,已有1000万+用户正在使用
- 最大的作用是进行接口测试(测试人员)、接口调试(开发人员)
2. 下载地址
下载地址:https://www.postman.com/
官方下载是最新版(英文版),如果需要中文版可以在群里下载
3. 安装流程
傻瓜式安装,无需教程
4. 注册postman账号
① 打开postman,点击【创建账号】或【登录】,会跳转到浏览器

② 若已有账号可以直接登录;若无账号,则创建新账号

③ 若登录成功会弹出提示框,点击“打开postman”,即可在postman客户端登录成功

④ 稍等一会,登录成功

5. 基本操作
① 创建用例集合

② 修改用例集合名称

一般情况下,我们会将集合改成项目名称,如“宠物医院”。表示这是某个项目的接口测试用例集
③ 创建文件夹

④ 修改文件夹名称

一般情况下,我们会将文件夹名改成模块名称,如“登录注册”。表示这是某个模块的接口测试用例集
除此之外,还可以再额外建子文件夹,给每一个接口划分一个文件夹
⑤ 添加一个请求

⑥ 修改请求名称

一般情况下,我们会将请求名改成用例标题,如“登录成功”。表示这是某个接口用例的脚本
⑦ 发起第一个接口请求:
现有宠物医院的登录接口如下:

写成postman脚本:
· 该接口为post请求方式+application/x-www-form-urlencoded传输类型:

· 如果是post请求方式+application/json传输类型,脚本如下:

· 如果是get请求,脚本如下:

6. postman的五种变量
Postman 在接口测试方面备受推崇的原因之一,就在于其强大的变量支持机制,丰富的变量使得参数化异常简单,极大的提高了脚本的灵活性。
在 postman 中提供了以下五种范围类型的变量
- 从作用域来说:全局变量>集合变量>环境变量>数据变量>本地变量
- 从优先级来说:本地变量>数据变量>环境变量>集合变量>全局变量

① 全局变量
在任何postman场景和脚本里都可以读取到的变量
右上角的小眼睛可以打开“全局变量”,如果还未设置全局变量,就会如下图展示:
点击“编辑”,即可设置全局变量,只需要填写变量名和初始值,点击“保存”即可:
变量名命名规则:字母、数字、下划线;见名知意!

此时再点开“小眼睛”,即可看到一个全局变量:

设置完全局变量,可以在任意一个脚本里使用它,如下图:

此时,接口也能访问成功。我们也可以进入“控制台”,查看接口访问时的信息

控制台里可以明确看到接口访问时的参数,其中username的值是“admin”。
② 集合变量
在当前测试集中可以读取到的变量
在左侧的文件结构中,选中一个测试集合→变量,即可添加变量(注意一定要保存)
在当前集合下的脚本可以使用该变量,如下图:

打开控制台,可见password的值时“123456”,正是集合变量中设置的值:

③ 环境变量
项目在不同的研发阶段,会处于不同的环境,postman可以给不同的环境配置对应的变量
右上角的小眼睛可以打开“环境变量”,如果还未设置环境变量,就会如下图展示:
取一个环境名称,如“开发环境”,再设置一个变量:

再创建一个环境,取名为“测试环境”,再设置一个同名变量:

此时,再环境列表中可以看到已有两个不同的环境:

切换到开发环境,从小眼睛中可看见有一个变量username=医生1,如下图:

切换到测试环境,从小眼睛中可看见有一个变量username=医生2

切换到开发环境,使用username变量发起请求,在控制台中可见对应的值是“医生1”

切换到测试环境,使用username变量发起请求,在控制台中可见对应的值是“医生2”

因此,在不同的环境下做接口测试,我们只需要更改postman对应的环境即可,不需要改变脚本内部
④ 数据变量
脚本在运行时,时可以读取外部文件中的数据,进行数据的批量运行
我们先准备一个CSV文件,数据如下:
回到postman中,选中脚本所在的文件夹,点击【运行】:

在运行界面,选择刚刚的CSV文件(支持:CSV、json、text,建议使用CSV):

点击“预览”按钮,查看文件中的数据,此时发现中文乱码:

借助notepad++工具打开CSV文件:

将编码改为UTF-8,再进行保存(保存时,要确保该文件没有在Excel中打开):

再回到postman,删除刚刚导入的文件,再一次导入CSV文件,此时预览数据显示正常:

点击【运行XXX】,即可批量运行脚本:

运行完成后,打开控制台,即可看到发送了三次请求,每一次请求的数据都不一样:

⑤ 本地变量
脚本运行前后都可以写JS代码段,【预请求脚本】会在请求发出去前运行,【测试】会在请求发出去后运行
在【预请求脚本】中,写JS代码段,如下图:
其中 var r = Math.random()表示创建本地变量r,r会生成一个0~1之间的随机数
注意,这个变量“r”只能在当前js代码段中使用,不能在postman的其他地方使用
7. postman的tests测试脚本
tests测试脚本,会在接口请求之后被执行,往往用于做接口断言,判断接口的响应是否满足预期
postman也很贴心的给我们准备了一些JS代码片段

① Status code: Code is 200(响应码:代码是200)

断言效果:接口的响应状态码是否为200
② Response body:Body matches string(响应正文:包含字符串)

断言效果:接口的响应体里,是否包含指定的字符串

如果断言失败,会标红显示
③ Response body: JSON value check(响应正文:JSON值检查)

断言效果:接口的响应体里,是否包含指定的字符串

注意:代码片段和响应体之间的关系
④ Response body: Is equal to string(响应正文:等于一个字符串)

断言效果:接口的响应体里是否完全等于指定的字符串

注意:代码片段和响应体之间的关系,也要避免引号冲突
⑤ Response headers: Content-Type header check(响应头:Content-Type头检查)

断言效果:接口的响应头里,是否存在指定的key
⑥ Response time is less than 200ms(响应时间小于200ms)

断言效果:接口响应是否在规定时间内完成
⑦ Successful POST request status code(状态码POST请求成功)

断言效果:接口的响应状态码,是否在指定的列表值里
⑧ SCode name contains a string(状态码:代码名包含字符串)

断言效果:接口的响应状态码对应的英文名称,是否为指定的名称
3. 在当前接口执行完成后,发送GET请求

效果:当前接口请求完成后,会紧接着发送一个get请求(只能是get请求)
8. JS代码段设置变量
除了在界面操作添加变量意外,还可以使用JS代码触发控制变量
postman又很贴心地给出了代码片段,可以获取、新增、删除变量,如下图:

也可以在“预请求脚本”中控制变量,如下图:

9. 实际运用JS代码段
假设有如下需求:
宠物医院登录接口、查询宠物接口、申请预约接口,三个接口完成一个预约场景接口测试:
- 难点1:“查询宠物接口”请求成功后,响应数据中的“id: 33”是宠物ID,是“申请预约接口”的入参之一
- 难点2:“申请预约接口”请求数据“phone”,希望能够随机生成手机号
① 咱们先看看接口信息,理清接口之间的关系:



② 编写“登录接口”postman脚本:


③ 编写“查询宠物接口”postman脚本:


③ 编写“申请预约接口”postman脚本:


