0


全网最强最细postman接口测试教程(三)

目录:导读

一、提取接口返回值

1、获取响应的header值

var Content-Type = postman.getResponseHeader("Content-Type");

2、获取响应的cookie值

var xsrfCookie = postman.getResponseCookie("csrf_token");

3、获取响应的正文

var response = responseBody;

4、使用正则表达式截取响应部分内容,通过要截取的字符串左右边界截取

var str =(responseBody.match(newRegExp('"expires_in":(.+?)}')))[1];

5、返回的是json数据,可以通过转换成json对象然后解析

var responseDate =JSON.parse(responseBody);
responseDate.expires_in

6、转化XML格式的响应成JSON对象—Convert XML body to a JSONobject

var jsonObject =xml2Json(responseBody);

二、接口关联(串行传参)

微信公众平台开发者文档中,创建用户分组接口需要获取access token接口返回的access_token值才能进行创建分组,之前我们使用的方式是先执行获取accesstoken接口,得到值后,然后复制到创建用户分组接口。上述做法不能完成接口自动化操作,只能手工逐个去执行,我们可以利用postman的相关功能组合完成获取access token接口的返回值送给创建用户分组接口,该过程称为接口关联

操作如下:
1、利用postman获取上一个接口指定的返回值

2、使用postman全局变量保存上一个接口的值
代码如下:

postman.setGlobalVariable("access_token", str);

其中前面的参数为全局变量名称,后面为js变量
3、和之前引用全局变量一样,使用 {{access_token}} 即可

备注:由于有关联关系,所以两个接口要顺序执行才能互相之间传递数据

三、设置动态参数

在runner里循环发n次请求/做自动化测试时,有些接口不适合写死参数:

1、Postman有以下内建变量,适合一次性使用:

{{$$guid}}//生成GUID{{$timestamp}}//当前时间戳{{$randomInt}}//0-1000的随机整数

设置顺序值代码:

var j =parseInt(globals.i);
j = j +1;
postman.setGlobalVariable("i",j);

2、参数依赖上一个请求的返回:
上个请求的Tests里提取参数存环境变量,这个请求里用 {{变量名}} 取值

3、参数每次都不同,但之后的断言或别的请求里可能还要用:
在Pre-request Script里写代码处理,存为环境变量,参数里用 {{变量名}} 取值

Pre-request Script为执行接口请求之前要做的操作,而tests是执行完请求要做的操作。内建变量一般放在Request里,我们也可以用代码在Pre-requestScript中实现,用代码实现的好处是可以复用

举例如下:
时间戳实现:

var times = Date.now();
postman.setGlobalVariable("timess", times);

guid实现:

const guid ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/x/g,()=>(Math.floor(Math.random()*16)).toString(16)).replace(/y/g,()=>(Math.floor(Math.random()*4+8)).toString(16));

随机整数实现:

constrandomInt=(min, max)=> Math.floor(Math.random()*(max- min+1))+min;
postman.setGlobalVariable("nums",randomInt(0,1000));

从多个选项中选择实现:

constgetRandomValue=list=> list[randomInt(0, list.length -1)];const charsInName =['刘','关','张'];
postman.setGlobalVariable("options",getRandomValue(charsInName));

顺序取值实现:

var s = postman.getGlobalVariable("num");
s =parseInt(s)+1;
postman.setGlobalVariable("num",s);

随机手机号实现:

environment.randomMobile =`18${randomInt(100000000,999999999)}`;

同步等待实现:

constsleep=(milliseconds)=>{const start = Date.now();while(Date.now()<= start + milliseconds){}};

四、流程控制

流程控制只有在collection runner或Newman里才生效

假设2个接口的顺序为:接口A–>接口B
接口A:https://www.baidu.com/s?wd=刘备
接口B:https://www.baidu.com/s?wd=曹操

软件测试如果希望执行顺序为: 接口A -> 接口B -> 接口A,又不想复制一份接口A,那么在接口A的Teses中编写脚本如下图所示:
请添加图片描述
wd为接口B中的返回值,在接口B中将其定义成一个全局变量。接口A通过判断全局变量是否正确进而判断接口B是否执行。如全局变量判断正确,将终止执行,否则执行接口B

接口B的Teses中编写脚本如下图所示:
请添加图片描述
“A接口” 为A接口的名称。如果需要实现多个接口的一次循环,只需在每个接口的Tests中编写脚本

postman.setNextRequest('下一个接口名');


本文转载自: https://blog.csdn.net/shuang_waiwai/article/details/124692047
版权归原作者 网易测试开发猿 所有, 如有侵权,请联系我们删除。

“全网最强最细postman接口测试教程(三)”的评论:

还没有评论