内容概要:1、环境变量、全局变量 2、脚本 3、数据池 4、mock server
一、主界面

1、History:查看看请求的历史记录
Collections:创建的收藏,收藏可以把请求的URL地址、方法、参数保存下来。
2、request builder:请求构建器,可以快速构建出我们想要的request。
3、reponse:body响应内容,有三种查看方式
pretty:格式化json或xml形式的响应内容
raw:text文本
perview:渲染后的响应内容
右上角也包含了响应状态码、响应时间及响应大小。
二、Environment 和 Globals
在request左上角可以配置、查看环境变量和全局变量

配置好的环境变量和全局变量,在请求地址、请求体和脚本中都可以引用。例:在接口地址中引用环境变量,实现在测试环境和正式环境间的快速切换,不需要再重新构建请求。

三、脚本
postman集成了一个基于nodejs的script引擎,借助它,可以为requests和collections添加动态的行为。
这样就可以在编写test suite时,构建可以包含动态参数的request,在request之间传递数据等等,实现一定程度上的自动化测试。
你可以在流程中的两个时间段中添加要执行的JavaScript代码:
1. 在发送request之前,编写pre-request script,定制化request。
2. 收到response之后,用test script,处理返回的数据。
流程如下:

pre-request script就是一段在发送request之前执行的脚本,通过它再配合上对环境变量的使用,可以实现变化的url参数、变化的请求body。
举个栗子:
我想每次使用不同的insuPeriod来请求这个接口。
先配置了一个叫insuPeriod初始值为0的全局变量,并在我的请求体中使用双花括号引用了这个变量。

然后在Pre-request Script里面写了个脚本,使insuPeriod自增。

这时候我们每发送一次请求insuPeriod都会+1。
但是这时还需要靠肉眼去看response的内容来判断结果是否符合预期。
所以我们写一个test来在每一次请求结束后自动去判断,下面这一段代码是来判断response body的code值是否等于"SUCCESS",若不等于,则不通过测试。(在test中有postman准备好的code snippets 选择即可直接使用)

可我还是不满足,因为现在还是需要我每次去点击发送请求,可不可以让它自动执行多次请求并断言呢?
这时就需要用到collection runner中的迭代了,在collection runner中我们可以设置运行环境、迭代次数、每次运行的间隔时间,还可以上传本地的数据文件以供使用(后话)。
这里我设置了12次迭代,然后开始执行。

执行完毕后postman会生成Run Results 和 Run Summary,在这两个页面可以查看每次请求的结果、test脚本执行的结果、也可以查看每次运行的详细信息,便于定位问题,从下图中可以看出第二次的提交的requst body中的insuPeriod值为2,说明我们的Pre-request Scrip起了作用。


四、数据池
在postman的collection runner中可以上传数据文件,使用这个数据文件可以是我们的请求和脚本参数化,使每次用例的迭代的数据都不同。
数据文件可以是cvs或json,在csv文件中,文件的第一行为参数名,下面是参数对应的值,需注意数据的条数要与迭代的次数相同。
图中为两个参数设置了三个值

在请求中引用参数,每次迭代都会重新获取数据池中的值。

同样,在脚本中也可以引用数据池中的参数,可以用data.test或data['test']来获取

在collection runner中上传数据文件生成数据池。

此时点击开始运行,每次请求都会一次请求上传的数据池中的数据,实现了collection运行的参数化,而不用每次运行都去手动修改参数值,相当于一个简单的自动化测试,适用于回归测试。
五、mock server
mock测试:对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,可以不后端返回数据。
我们的业务也有涉及到其他公司提供接口的情况,会使测试进度卡在某个节点上,可以用postman搭建临时的mock server来模拟这类接口的服务,进行测试,下面演示一下如何用postman创建一个mock。
1、new一个mock server,填写一个api,这里可以先不详细写,后面再对request path 和responsebody做二次编辑。

2、填写mock-server名称,如果需要使用环境变量,可下拉选择。创建mock-server。

3、生成mock url

4、创建mock时已经生成了一个为testmock的路径,这时选择在这个mock-server的环境下,点击send发送请求就可以获取到我们预先设定好的返回值了。
点击右上角的Add Example,可以再添加其他的请求和返回值。

网友评论