上面讲的都是利用Postman进行手工测试的操作,如果我们想提高测试效率,或可以在测试过程中假如自动化的代码,将代替一分部的手工操作。利用Postman进行自动化测试通常是两种方式:

一种是利用Postman自身js代码执行沙盒,在发送请求之前写一些设置发送消息的代码。比如产生随机数字,填入当前日期时间到数里,在接收到响应之后,写一些判断接收数据的代码。比如某个字段是否存在,某个字段的值,是否和预期的一样等。

二是利用Postman自动生成其他编程语言代码,比如使用requests库的Python代码,直接发送相应的HTTP请求消息。当然我们同样可以使用Python代码,对请求消息入一些动态的数值,并且检查接收的响应消息。

9.1 使用js脚本

Postman内置一个js语言的解释器,我们可以在API请求发送接收的前后,入一些js代码,如下图所示的Pre-request Script 便签页里面可以加入的代码postman.setEnvironmentVariable('cureTime',new Date()),就是在发送请求之前执行的js代码。下图的代码就是将环境里面的变量timestampHeader值设置为当前的时间


image.png

cureTime是变量名,new Date()是js生成时间方法。点击send发送的时候就会先执行这段代码,就会生成当前时间的变量名(cureTime),我们就可以在请求的消息体使用上这个时间。比如我们有一个用例,添一门课程并且这个课程不存在

,有一种方法就是在课程名里面上一个随机的字符串,如果我加上当前的时间戳,这个课程名是不可能重复的


image.png

然后我们不修改请求多发送几次请求发现都是成功的, 我们发送列出课程的接口,看看有哪些课程


image.png

大家可以看到数据都是不重复的,但是有个缺点名称太长,其实有把js代码换成年月日的形式


image.png

代码:

var d = new Date();
var strDate = d.getFullYear().toString()+"-"+((d.getMonth()+1).toString().length==2?(d
.getMonth()+1).toString():"0"+(d.getMonth()+1).toString())+"-"+(d.getDate().toString
().length==2?d.getDate().toString():"0"+d.getDate().toString());
postman.setEnvironmentVariable('cureTime',strDate);

我这里cureTime是放在环境的变量里面,一旦执行之后,就会放在环境里面


image.png

这里要了解一下,会python的同学就不需要用这个方法了,后面我们会有python代码的操作。有的同学会疑问这个能不能放在全局变量里面,当然是可以的我们看右边SNIPPETS


image.png

SNIPPETS就是代码的片段,比如我们要写在全局变量里面我们可以点击Set a global variable


image.png

就会自动生成全局变量的代码,我们只要稍作修改就好了


image.png

然后在请求中使用就OK

postman还有一个检查的功能Tests,不仅仅可以生成一个动态的数据,还可以发送之后接收的结果他可以做一个简单的检查,比如我们检查结果里面是否有retcode字段,我们可以看下SNIPPETS有没有检查,他这里有Response body:Contains string就是响应的消息体中是否包含了某一个字符串,我们点击一下就会生成相应的代码


image.png

稍作修改,就是检查消息体中是否包含了retcode


image.png

大家注意以前我们在执行Postman,执行完了之后这个Test Result是没有结果的


image.png

现在我们在运行一下


image.png

Test Result就有结果了,我们可以看到是PASS,就是里面包含retcode,还有一些检查点,大家可以自己去了解下

总结:

Postman不适合做自动化测试

自动化测试应该做到

1.自动化用例能够完成所有的测试步骤

2.每个用例的输入数据(API请求中的数据),必须要自动填入

3.每个用例的结果检查(多个步骤),必须可以用代码自动完成

4.初始化、清除功能

主要使用场景

1.手工测试

2.半自动化测试(可以做一些请求数据的动态生成,用例结果做一些自动化代码的检查)可以做一些,但是很多情况下光靠他还不行,还得我们人的干预,我们要认清Postman,最主要是手工测试,适合没有编码能力的测试