Postman常用功能操作
Posted wangyiyan212
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postman常用功能操作相关的知识,希望对你有一定的参考价值。
Postman是一款支持http协议的接口调试与测试工具,功能强大,使用简单且易用性好 。无论是开发人员进行接口调试,还是测试人员做接口测试,postman都是我们的首选工具之一 。
为了让便于大家快速了解其常用功能,尤其是接口测试中经常使用到的部分,我将从以下几个维度来加以说明。它们分别是:
- 界面主要功能
- JSON类型的接口请求
- Collection
- 断言
- Tests Scripts
- 变量
- 接口关联
界面主要功能
JSON类型的接口请求
大部分接口都是JSON类型的接口请求,即请求头中Content-Type的类型为application/json。我们以登录接口为例演示如何使用Postman发送请求。
查看接口文档,登录请求接口信息如下:
- 请求方法:POST
- 请求URL: http://ServerIP:Port/user/login
- 请求体数据:“username”:“username”, “password”:“password”
Postman上操作步骤如下:
- postman上新建一个请求
- 设置相关参数,如下图所示:
- 点击Send后查看响应数据,如下图所示:
Collection
Collection在Postman里的主要作用就是对接口测试用例进行集中批量管理,通过Collection,我们可以对用例进行分类管理和维护,同时可以对接口用例进行批量测试,方便进行回归测试。
创建Collection
点击Postman左上角新建或者在collection Tab菜单下点击"+"即可创建collection。
将测试用例添加到collection中
可以选择新建的collection,点击右下角的"…"按钮选择添加request,如下图所示:
也可编写好request后,选择保存request,然后在postman中弹出的对话框中选择保存到对应的collection中,如下图所示:
批量执行collection中的用例
点击collection右侧的三角形按钮,点击"Run",Postman会弹出一个叫Collection Runner的界面,默认会把Collection中的所有用例选中,如下图所示
点击运行按钮,就会对Collection中选中的所有测试用例运行。
执行完成后,可以查看对应执行结果
断言
断言主要是对request返回的数据进行相应的判断,从而方便我们进行自动化测试,postman提供的断言使用JS编写,在响应体数据返回后执行 。postman已经给我们内置了一些常用的断言 ,需要用的时候,只需从右侧点击其中一个断言,就会在文本框中自动生成对应断言代码块。
如上图所示,针对登陆这个接口,在Tests标签内对请求返回的数据使用了2个断言,第一个断言判断请求返回的状态码是否为200,第二个断言判断返回的token长度是否为32,这两个断言都通过测试的话基本可以认为这个接口测试是通过的。
Postman提供了的内置断言如果不满足需要的话,大家可以查阅官方文档里面提供的demo,链接如下:
Tests官方样例参考
Tests Scripts
在断言部分的介绍中,我们其实已经使用了Tests脚本,其实Postman 的 script 主要分成两类,一类是 Pre-Request Scripts,在发送请求之前执行,一类是 Tests,在接收到响应之后执行。
Collection/Folder/Request 层面都可以定义自己的 Pre-Request Scripts 和 Tests,执行顺序如下:
- 与集合关联的预请求脚本将在集合中的每个请求之前运行
- 与文件夹关联的预请求脚本将在文件夹中的每个请求之前运行
- 与集合关联的测试脚本将在集合中的每个请求之后运行
- 与文件夹关联的测试脚本将在文件夹中请求后运行
对于集合中的每个请求,脚本将始终根据以下层次结构运行:集合级脚本(如果有)、文件夹级脚本(如果有)、请求级脚本(如果有)。
单个请求的执行顺序如下:
- 与请求关联的预请求脚本将在发送请求之前执行
- 与请求关联的测试脚本将在请求发送后执行
变量
变量使我们可以在请求或脚本中存储和重复使用其值,通过将值保存在变量中,可以在集合,环境或请求中引用。例如,我们的接口除了登录以外,所有接口都需要添加token信息,如果发送每个请求前都再执行一遍登录接口或者将请求token放到Pre-Request Scripts中未免显得有些繁琐,我们可以将登录接口返回的token存到变量中,后面接口发送请求时直接获取该变量值并填写到headers中即可。
变量类型
在postman常用的三种变量分别是全局变量,环境变量,集合变量 。
- 全局变量:一旦声明了全局变量,全局有效,也就是说postman中的任何集合,任何请求中都可以使用这个变量。它的作用域是最大的 。
- 环境变量:要声明环境变量,首先需要创建环境,然后在对应环境中创建变量。如果要想使用环境变量,必须先选择(导入)这个环境 。环境也可以创建多个,每个环境下又可以有多个变量 。
- 集合变量:集合变量是针对集合的,也就是说声明的变量必须基于某个集合,它的使用范围针对这个集合有效 。
变量作用域
变量的作用域采用"就近原则",如果在两个不同的作用域中声明了同名的变量,那么将使用作用域最小的变量中存储的值——例如有一个全局变量和一个局部变量都命名为username,则请求时将使用局部变量的值运行。
定义变量
定义全局变量和环境变量,点击Postman右上角的小齿轮,弹出如下界面,就可以根据需求定义全局变量或者环境变量了。
集合变量可以点击集合右侧“…”按钮,选择“Edit”,选择变量选项卡添加或编辑变量
获取变量
如果在请求参数中获取变量,无论是获取全局变量,还是环境变量,还是集合变量,获取的方式都是一样的编写规则:变量名 。
请求参数指的是:URL,Params , Authorization , Headers , Body
如果是在编写代码的位置(Tests,Pre-requests Script)获取变量,获取不同类型的变量,编写的代码都不相同,具体如下:
- 获取环境变量:pm.environment.get(‘变量名’)
- 获取全局变量:pm.globals.get(‘变量名’)
- 获取集合变量:pm.pm.collectionVariables.get.get(‘变量名’)
设置变量
设置变量在Tests和Pre-requests Script中进行
// Variables
// 这个方法会从上面所有的变量来源寻找对应的变量,就近原则,优先从最靠近自己的地方找
var value = pm.variables.get("variable_key");
// Globals
// 设置一个全局变量
pm.globals.set("variable_key", "variable_value");
// 取消设置全局变量,移除变量
pm.globals.unset("variable_key");
// Environments
// 设置一个环境变量
pm.environment.set("variable_key", "variable_value");
// 从环境中移除某一个变量
pm.environment.unset("variable_key");
// Collection
// 设置一个 collection 变量
pm.collectionVariables.set("variable_key", "variableValue");
// 从 collection 中移除一个变量
pm.collectionVariables.unset("variable_key");
// local
pm.variables.set("variable_key", "variable_value");
pm.variables.unset("variable_key");
接口关联
在接口测试中,我们经常遇到这种情形:上一个接口的返回数据是下一个接口的输入参数 ,那么这俩个接口就产生了关联。 这在做接口测试时非常常见,在postman中,实现这种关联关系的实现思路如下:
- 提取上一个接口的返回数据值
- 将这个数据值保存到环境变量或全局变量中
- 在下一个接口获取环境变量或全局变量
我们在变量部分举的登陆获取token的例子就是这种场景。
以上是关于Postman常用功能操作的主要内容,如果未能解决你的问题,请参考以下文章