接口执行顺序设置
方法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:https://www.baidu.com/s?wd="海贼王"接口B:https://www.baidu.com/s?wd="路飞" 如果我们希望执行顺序为:接口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执行的次数