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脚本: