Postman 最被低估的功能!,javanginx面试

如果使用 Json 文件的话,那么格式如下:

[

{

“username”: “test1”,

“password”: “123456”

},

{

“username”: “test2”,

“password”: “222222”

},

{

“username”: “test3”,

“password”: “123456”

},

{

“username”: “test4”,

“password”: “444444”

}

]

定期任务

Postman 提供了一个 Monitors (监视器)功能,支持我们提交一个测试任务,按照设置的定时器进行运行,如每小时测试一次,具体操作如下:

20542e67e325d5641468d60fa1d4cfab.png

请求依赖问题

讲完接口结果判断和集合批量测试后,我们再来看看比较复杂的情况,即依赖请求问题,比如我们的购物下订单接口要求必须先登录后才可访问。但大部分依赖问题其实本质上就是一个接口间数据传递的问题,比如调用登录接口后返回一个标识,假设为 token ,那么我们请求下订单接口时只要一起携带 token 参数进行请求即可。所以,问题变为:

  • 保证接口调用顺序

  • 将接口A返回的数据传递给后续的接口B、C、D

接口执行顺序

首先,说明一下,接下来说的接口都是默认属于同一个集合 (Collections) 中的。

还是以我们上文中创建好接口集合为例,如果你有注意我们执行批量测试的结果,就会发现接口的执行顺序其实就是按照这边目录中的顺序(从上到下),即:Request1 -> Request2 -> Request3

50bc959469e7023230b28eefbf98b579.png

这边接口名字可能有点误导性,所以再强调一下:按目录中从上到下的顺序执行 (与字典排序无关)

所以有了这个默认的执行顺序后,那么我们便可以把需要优先执行的接口放前面即可,比如把“登录接口”放在第一个。

如果您正在学习Spring Cloud,推荐一个连载多年还在继续更新的免费教程:https://blog.didispace.com/spring-cloud-learning/

自定义执行顺序

当然,如果只有默认的一个执行顺序的话,通常没法满足我们复杂的业务需求,所以 Postman 为我们提供了一个函数:postman.setNextRequest("填写你要跳转的接口名") ,支持我们跳转到指定接口继续执行,举个例子:

我们在运行完 Request1 接口成功后,不需要再运行 Request2 而是直接跳至 Request3 ,那么我可以在 Request1 接口的 Tests 功能区中执行跳转代码,如:

cd7be49804bf8e91b7fe37c7f651700f.png

这里需要注意几点:

  • postman.setNextRequest() 只在运行集合测试的时候生效,也就是说我们单独运行 (Send) 接口Request1 时,函数是不起作用的。

  • 当我们运行集合测试成功从 Request1 -> Request3 后,如果 Request3 后面还有接口,那么后面的接口仍然继续按默认顺序执行,即图中的接口 Request4 仍会被执行。

  • 指定的跳转接口必须属于同一个集合中。

  • setNextRequest() 函数不管在 Tests 脚本中何处被调用,它都只在当前脚本最后才被真正执行。比如我们将图中的第二行与第一行互调后,那么在运行跳转函数后第二行代码仍会被执行。

所以,利用 setNextRequest() 函数,我们便可以按照条件跳过不必要的接口,或者建立我们自己的一个逻辑测试。

数据传递

在讲数据传递前,先聊聊 Postman 中全局变量、环境切换的使用。

全局变量

全局变量的概念其实我们在上文中讲 Pre-request Script 时有简单提到,也就是说我们可以通过脚本代码来设置全局变量。

运行后,username 和 password 两个变量会被成功保存下来,那么我们在任意接口中便都可以通过变量引用的语法如:{{username}} 来使用它们。

另外,Postman 不仅支持代码设置全局变量的方式,它还支持可视化操作:

7677d3c027e0b3951053478058f688e1.png

进入对应界面后,便可直接进行管理:

bfa4bc72ccb90f03bdbec8a001aa632d.png

多环境区分与切换

通常情况下,我们的接口都会分为测试版本和线上版本(或者更多),而他们的区别可能仅是 ULR 不同,那么全局变量便不大合适解决这个问题。

另外,如果您正在学习Spring Cloud,推荐一个连载多年还在继续更新的免费教程:https://blog.didispace.com/spring-cloud-learning/

参数的创建

可能你已经注意到,上图中我已经建有几个不同环境的参数“集合”了,再看一下:

a9ca8691898f85fd3177b677bdbd6657.png

我在每个环境中都创建了一个 host 参数,如:

16a20bfc9ea8502a41b7022aa30aba58.png

当然,我们的环境参数也可以通过脚本的方式来进行设置,函数为:

//注意,该参数只添加到你当前选择的环境的“参数集”中

postman.setEnvironmentVariable(“variable_key”, “variable_value”);

使用与切换

环境“参数集” 中的参数使用方式和全局变量一致,如图中 {{host}},不同环境的切换见下图:

9d317715c6d2f4c2b6bf8a19ad055e64.png

解决依赖问题

掌握以上的预备知识后,我们开始看看如何用 Postman 解决存在依赖关系的接口测试。

假设场景

我们的接口 Request1 为登录接口,登录成功将会返回一个 access_token 字段作为标识(已实现)。那么假设接口 Request3 为一个下订单的接口,需要携带登录返回的 access_token 才能正常访问。

思路

  • 保证 Request1 在 Request3 之前被运行

  • 将 Request1 返回的 access_token 的值添加到环境变量"参数集"中。

  • Request3 在请求时引用 access_token 的值

将返回值存在 “全局变量” 或者 “环境变量” 中,视具体业务情况而定,该例中 access_token 的值是与环境有关的,所以这里选择使用环境变量集存储。

Postman 中的操作

1、我们目录中已保证 Request1 接口优先执行

2、Request1 中 Tests 的代码情况:

if(responseCode.code === 200 && responseBody.has(“access_token”)){

//如果 code 为 200, 并且返回的数据中存在 access_token 关键字,则认为登录成功

tests[“login”] = true;

//将返回的内容转为 json 格式,并且取到 access_token 内容,添加到环境变量中

var jsonData = JSON.parse(responseBody);

//access_token的取值方式视具体的 json 数据结构而定

postman.setEnvironmentVariable(“token”,jsonData.result.access_token);

//跳转到 Request3 接口

postman.setNextRequest(“Request3”)

}else{

tests[“login”] = false;

//登录失败,可以选择跳转到对应失败后的处理接口进行测试

//postman.setNextRequest(“Other Request”)

}

3、在接口 Request3 中使用变量 token :

8f134eacc917fdccbe705e20ac77f6f3.png

我这边是将 token 放在头部信息中, 具体使用方式时接口参数规则而定。

运行

运行集合测试,结果符合我们的预期,Request1 和 Request3 通过测试,Request2 被跳过,Request4 仍被执行。

往期推荐

抖音前端团队发文致歉,承认借鉴 Ant Design

JWT 应该保存在哪里?

一个月薪 12000 的北京程序员的真实生活

一文带你入门 JMeter 性能测试!

程序员的“鱿鱼游戏”,你能活到第几关?


cae793e3b127539ec3476846412da2ba.png技术交流群198f5701f14b536b4344ed5d65207d76.png
最近有很多人问,有没有读者交流群,想知道怎么加入。加入方式很简单,有兴趣的同学,只需要点击下方卡片,回复“加群“,即可免费加入我们的高质量技术交流群!
点击阅读原文,送你免费Spring Boot教程!

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!*

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-E30Khh7P-1710837694083)]
[外链图片转存中…(img-0bU7immy-1710837694083)]
[外链图片转存中…(img-2P91Ojxe-1710837694083)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-bapxZWvC-1710837694084)]

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值