postman接口执行顺序控制

Posted 测试人的自我提升

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postman接口执行顺序控制相关的知识,希望对你有一定的参考价值。

接口执行顺序设置

方法1:在Run Collection中我们可以修改请求的执行顺序

如下图,这里将所有的接口放到一个Collection请求集合中, 我们可以直接拖动接口, 改变默认Collection的各接口执行顺序, 也可以选择不运行哪些请求.

 

 

方法2:通过postman.setNextRequest("要执行的接口名称");来手动控制请求的跳转

除了在Run Collection时调整接口顺序外,我们还可以通过postman.setNextRequest("要执行的接口名称");来手动控制请求的跳转,如下图, 新建一个Collection, 新增A, B, C, D,E5个请求, 在请求A的Tests脚本中添以下代码:

postman.setNextRequest("D");

这样A执行完下一个就是执行D请求,然后我们看下这5个请求在collection中的执行结果:

从上图我们可以看出, 实际执行collection过程,执行完A请求后跳过了请求B, C, 直接跳转到D请求.,D请求执行完成后继续执行后面的E请求,所以最终结果只执行了A,D,E三个请求

另外如果D请求在运行时未勾选, 则只会运行A请求,结果如下图

 

 通常情况下,我们可以使用if判断来控制流程跳转, 比如, 通过判断A请求是否成功来分别跳转到D请求或B请求.

var jsonData = pm.response.json()

if(jsonData.code== \'0\')

{

postman.setNextRequest("D");

}

else

{

postman.setNextRequest("B");

}

 

同时,我们也可以在最后一个请求中使用postman.setNextRequest(), 跳转到前面的请求, 来完成一个循环, 比如在E请求使用postman.setNextRequest("A"), 这样就会无限循环的执行下去,

一般来说, 循环中一定要设置中止条件, 一般通过if判断是否执行postman.setNextRequest(”下一个请求“)来控制是否继续循环

 
示例:假设有2个接口的顺序为:接口A-->接口B
如果我们希望执行顺序为:接口A -> 接口B -> 接口A,又不想再复制一份接口A,那么
 
接口A的Teses中编写脚本:
if(globals["wd"] == "海贼王")

{
postman.setNextRequest("null");//是一个终止程序作用

}
tests["A接口执行"]=true;//输出A接口执行

 

接口B的Teses中编写脚本:

var str = (responseBody.match(new RegExp(\'<title>(.+?)</title>\')))[1];

tests["B接口执行"] = true;//输出B接口执行
postman.setGlobalVariable("wd",str);//把获取到的返回值存为全局变量wd
postman.setNextRequest("A接口");//下一个执行接口为A接口,A接口为接口A的名称

 

注:wd为接口B中的返回值,在接口B中将其定义成一个全局变量。接口A通过判断全局变量wd是否正确进而判断接口B是否执行。如果全局变量判断正确,将终止执行,否则执行接口B。

 如果需要实现多个接口的一次循环,只需在每个接口的Tests中编写脚本postman.setNextRequest(\'下一个接口名\');
 
【注意】
1.如果不设终止条件,接口A执行完到接口B,接口B执行完又指向接口A,会构成死循环。该示例中if(globals["wd"])为终止条件。
2.执行前需将用来做判断的全局变量删除,否则第一次执行完接口A后就将终止执行。
3.为了更清楚直观的查看运行结果,最好在每一个接口的Tests中增加一个断言,否则难以判断接口A执行的次数

 执行顺序控制只有在collection runner或Newman里才生效

以上是关于postman接口执行顺序控制的主要内容,如果未能解决你的问题,请参考以下文章

接口测试 - 用Postman进行Apitest

postman中设置流程控制

Postman高级玩法之Pre-request Script

Postman----打开postman console控制台,查看接口测试打印log

postman实现登录,后续接口请求带着cookie,防止被拦截

Python 向 Postman 请求代码片段