Postman请求运行顺序及Workflow
作为一款接口调试利器, Postman的更新迭代速度很快, 不断加入了很多新的功能.使的api设计,测试,监控, Mock,以及团队协作更加方便.
修改执行顺序
在遇到有接口依赖的情况, 我们往往需要接口按顺序执行, 之前可以通过在一个请求的Pre-request Scripts中使用pm.sendRequest发送所依赖的请求来实现, 新版本Postman在Run Collection中我们可以修改请求的执行顺序, 如下图:
这里将所有的接口放到一个Collection请求集合中, 在"百度获取token"这个请求的Tests脚本中中,将access_token存为全局变量, 以供"百度orc"使用.
我们可以直接拖动, 改变默认Collection的执行顺序, 也可以选择不运行哪些请求.
Workflow工作流
除了在Run Collection时调整顺序外,我们还可以通过postman.setNextRequest("同Collection下保存的请求名");
来手动控制请求的跳转.
顺序结构
如下图, 新建一个Collection, 新增A, B, C, D, E, F 5个请求, 在请求A的Tests脚本中添加
postman.setNextRequest("D");
以使A执行完下一个执行D请求.
从上图我们可以看出, 实际上跳过了请求B, C, 直接跳转到D请求.
注意: 如果D请求在运行时未勾选, 则只会运行A请求
分支结构
通常情况下,我们可以使用if判断来控制流程跳转, 比如, 通过判断A请求是否成功来分别跳转到D请求或B请求.
var jsonData = pm.response.json()
if(jsonData.args.a == 'a'){
postman.setNextRequest("D");
}
else{
postman.setNextRequest("B");
}
循环结构
我们可以通过在最后一个请求中使用postman.setNextRequest(), 之前的请求, 来完成一个循环, 比如在F请求使用postman.setNextRequest("A"), 就会无限循环的执行下去, 如下图所示:
一般来说, 循环中一定要设置中止条件, 一般通过if判断是否postman.setNextRequest()来控制是否继续循环.
示例: 异步接口轮询
我们可以用一个postman.setNextRequest指向自身的请求来完成异步接口的轮询.
- 新建一个Collection, 新建一个"创建订单接口", 请求为:
http://115.28.108.130:5000/api/order/create/?
user_id=123&goods_id=123&num=2&amount=20.0
这是一个异步接口, 接口会返回一个order_id用于查询订单结果. 我们在Tests中,将获取到的order_id存为全局变量以供下一个接口使用, 如下图所示:
var jsonData = pm.response.json()
pm.globals.set("order_id", jsonData.order_id);
- 新建一个"获取订单结果"接口, 请求为:
http://115.28.108.130:5000/api/order/get_result/?order_id={{order_id}}
这是一个获取订单接口, 订单不确定多长时间创建好, 如果订单在创建过程中则返回"{}", 如果创建成功则返回:
{
"amount": "20.0",
"goods_id": "123",
"num": "2",
"user_id": "123"
}
我们在Tests脚本中设置轮询条件, 下个请求指向自身如下:
if(pm.response.text() == "{}\n"){
postman.setNextRequest("获取订单结果");
}
Run Collection 我们发现, "获取订单结果"请求被快速的请求, 直到停止, 实际上我们还需要设置一个轮询间隔, 我们将postman.setNextRequest放到一个函数种,然后用setTimeout来延迟一定时间运行.
function loop(){
postman.setNextRequest("获取订单结果")
}
if(pm.response.text() == "{}\n"){
setTimeout(loop, 5000); // 设置间隔5s
}
如下图, "获取订单结果"请求会5妙执行一次, 知道订单处理完成.
注意:
- 一般我们还要设置最大轮询次数或最大轮询时间, 来防止接口始终返回"{}\n", 导致轮询无法中止(可以通过使用整数变量自增完成).
- 在轮询完也可以加上断言(写到else中)
Postman请求运行顺序及Workflow的更多相关文章
- 有一台机器,上面有m个储存空间。然后有n个请求,第i个请求计算时需要占 R[i]个空间,储存计算结果则需要占据O[i]个空间(据O[i]个空间(其中O[i]<R[i])。问怎么安排这n个请求的顺序,使
有一台机器,上面有m个储存空间.然后有n个请求,第i个请求计算时需要占 R[i]个空间,储存计算结果则需要占据O[i]个空间(据O[i]个空间(其中O[i]<R[i]).问怎么安排这n个请求的顺 ...
- ajax多个请求执行顺序
先说结论再说原因 结论:比如点击事件触发了两个ajax请求或者更多的请求,是没有执行顺序的,各个请求的快慢完全取决于返回的快慢,或许你在浏览器调试窗口看见的是先发了一个请求,再发了一个,但是完全没有等 ...
- Jmeter结构体系及运行顺序
一:jmeter运行原理: jmeter时以线程的方式来运行的(由于jmeter是java开发的所以是运行在JVM虚拟机上的,java也是支持多线程的) 二:jmeter结构体系 1.取样器smapl ...
- Jmeter 结构体系及运行顺序
一.Jmeter 运行原理: Jmeter 时以线程的方式来运行的(由于Jmeter 是 java 开发的所以是运行在 JVM 虚拟机上的,java 也是支持多线程的) 二.Jmeter 结构体系 1 ...
- Java类的基本运行顺序是怎样
我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo{ private String name; private int age; public Demo(){ ...
- Java类的基本运行顺序
不看不知道,一看还真吓了一跳!Java类的基本运行顺序你真的知道吗?如果你有疑惑,那就看下面这篇文章吧. 原文出自:[url]http://column.ibeifeng.com/chenchen ...
- testng标签运行顺序
testng的annotations运行顺序为: @BeforeSuite @BeforeTest @BeforeClass @BeforeMethod @AfterMethod @AfterClas ...
- 源码深度解析SpringMvc请求运行机制(转)
源码深度解析SpringMvc请求运行机制 本文依赖的是springmvc4.0.5.RELEASE,通过源码深度解析了解springMvc的请求运行机制.通过源码我们可以知道从客户端发送一个URL请 ...
- WindowsForm界面 运行顺序 Form属性
WindowsForm界面 运行顺序 Form属性 什么是类:1 类是面向对象编程的基本单元.类包含了两个成员 字段(Field)和方法方法(Method) 2 字段即变量 方法即函数什么是字段:字段 ...
随机推荐
- mysqlpump原理及实战
MySQL5.7之后多了一个备份工具:mysqlpump.它是mysqldump的一个衍生,mysqldump就不多说明了,现在看看mysqlpump到底有了哪些提升,可以查看官方文档,这里针对如何使 ...
- USB相关资料汇总
[1]USB规范,一切的一切,基本的基本,天书级别USB_11_spec(中文).pdf USB1.1规范(中文版) usb_20.pdf USB2.0规 ...
- Zookeeper 入门详解
zookeeper zookeeper是什么 Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务.同步服务和命名注册.ZooKeeper ...
- javascript 利用数组制作分页效果
代码 参数: pageSize:一页的总数 currentPage:当前的页数 skipNum:跳过的数量 arr:数组 返回值: newArr分页后的数组 var pagination = func ...
- FlowPortal BPM 安装环境的配置
l 操作系统:Windows Server 2003 及以上: l IIS: 在Internet信息服务(IIS)管理器中将ISAPI和CGI限制全部设为“允许” l 需要安装.Net Fram ...
- nhandled rejection Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\node_cache npm ERR! cb() never called!
安装全局包时报错,之前已经遇到过,结果第二次又忘记解决方法,果然还是要记下来,好记性不如烂笔头哇 $ npm i electron -gUnhandled rejection Error: EPERM ...
- 《浏览器工作原理与实践》<05>渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?
在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢?就进入了渲染阶段.这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可以解决一系列相关的问题,比如能熟练 ...
- (十一)tina | openwrt关闭调试串口(DEBUG UART)
//编辑以下文件 vi target/allwinner/astar-parrot/base-files/etc/inittab //不同系统文件路径注意更改 //文件内容如下,注释::askcon ...
- JSON添加注释的问题
JSON有两种数据结构: 名称/值对的集合:key : value样式: 值的有序列表:就是Array: 而在JSON的文档中说明只要是不符合上面两种结构的都不被支持,并提示错误 添加注释//或者/* ...
- Git远程分支和refs文件具体解释
推送远程分支到同一个server 比方首先建立gitserver,顺便clone出两个副本 mkdir server cd server git init --bare cd .. git clone ...