前言
在使用“Collection Runner”的时候,集合中的请求执行顺序就是请求在Collection中的显示排列顺序。但是,有的时候我们不希望请求按照这样的方式去执行,可能是执行完第一个请求,再去执行第五个请求,然后再去执行第二个请求这样的方式;那么在“Collection Runner”中如何去构建不同的执行顺序呢?这篇文章将总结如何在Postman中构建不同的工作流。为了配合完成这篇文章的讲解,需要下面的集合文件,并在Postman中完成导入。点击下载进行下载示例文件。
基础用法
当我们开始运行“Collection Runner”时,所有请求都会按照我们在主应用中看到的顺序进行运行。这意味着内部的所有请求都会首先按它们所在文件夹的顺序执行,然后执行集合根目录中的所有请求。但是,我们可以使用名为setNextRequest()
的内置函数来覆盖此行为。
顾名思义,setNextRequest()
将允许我们指定接下来要运行的请求。
结合上面提供的测试集合数据,导入以后,我们会发现测试集合中有四个请求。在第一个请求的“Tests”标签页中包含以下代码:
// Some code here
postman.setNextRequest('Request 4')
// Some code here
postman.setNextRequest()
是一个带有一个参数的函数,它是接下来要运行的请求的名称或ID。在这个例子中,我们正在请求1的测试脚本中将请求4设置为下一个请求。这意味着请求1完成后,执行将跳转到请求4。如果我们现在运行相同的集合,将会看到只有两个请求现在运行。如下图所示:
请注意,
setNextRequest()
仅适用于“Collection Runner”和Newman,其目的是运行集合,而不是发送单个请求。
高级用法
现在我们对setNextRequest()
的工作原理有了一定的理解,我们可以用它做一些更加高级的工作。由于不再受限于定义请求的顺序,因此我们可以在集合内部来回跳转请求,建立条件逻辑或跳过不必要的请求。但是,有一些需要我们注意的问题:
setNextRequest()
总是在当前脚本所有语句执行完成后才执行。这意味着如果在其他代码块之前放置setNextRequest()
请求,这些代码仍然会被执行;setNextRequest()
有一个作用域,它是集合运行的源。这意味着如果我们运行一个集合,我们可以跳转到集合中的任何请求(即使是使用相同语法的文件夹内的请求)。但是,如果运行文件夹,则setNextRequest()
的作用域限于该文件夹;也就是说我们可以跳转到该文件夹内的任何请求,但不能跳转到文件夹外的任何请求。这包括其他文件夹内的请求以及集合中的根级别请求。
总结
总结完毕!!!这篇文章是整个Postman系列教程的最后一篇,希望我的整个系列能够帮助大家对Postman有一个全新的认识。也非常感谢大家能够跟着我的教程走到最后。谢谢大家!!!
更新记录
- 2019年4月1日
这几天正好用到Postman的工作流这个功能,在使用的时候,我们有这样的一个需求:“上一个接口调用成功了,就通过setNextRequest
跳转到另一个接口;如果上一个接口调用失败了,就直接结束本次整个调用链,开始下一次的循环调用”。测试了好久,最后发现通过setNextRequest(null)
可以达到我的要求。
果冻想-一个原创技术文章分享网站。
2018年3月1日 于呼和浩特。
首先感谢小编,分享的这么多。对于这些postman的使用我已经看了一遍,对于后面的功能的使用还是比较晕,看来一下还是不行的。希望博主能及时的回复,答疑。再次感谢博主,我会把这些东西再看的
多操作就OK了。
非常感谢果冻想的分享,从头看到了尾,讲的非常全面,适用于全面了解postman的功能,编写文档的思维逻辑非常好,膜拜一下。
顺便问一下,付费版的功能您用过吗?一般都什么情况下能用到
很高兴我的文章能够帮助到你。分享使我们彼此成长的更快。
对于你说的付费版,我还没有使用过,目前的免费版的功能已经可以满足我的需要。
如果想知道Postman的付费相关功能,你可以查看这里:https://www.getpostman.com/pricing
谢谢你的支持。
在此非常非常感谢果冻想的无私分享,我也从头看到了尾,讲的非常全面,很适用全面了解postman的功能,编写的很用心很仔细。愿你万事都随心所欲。
谢谢支持。
这个后面怎么不更新了
这个系列教程都已经更新完成了,兄弟。