Insomnia:开源Rest client使用心得

Insomnia : 开源 Rest client 使用心得

1. 简介

?Insomnia,一款开源的、跨平台的、桌面应用级的Rest client。

?与Postman、Apifox是一类工具,用于接口管理、测试。主要支持http-based协议。

2. 安装及简单使用

2.1 安装

?Insomnia官 安装地址.

?Kong/Insomnia-Git地址.

2.2 简单使用

?虽然 上上关于Insomnia这款工具的使用教程挺少的,但是其基础功能与常见的接口工具基本相同,因此也不是很难上手。所以我也偷个懒,想了解基础功能使用的朋友们,可以去官 看看,基本上面都有些,包括一些进阶的教程,如Templates tags、request chain之类的。下面我也提供了一篇可以参考的文章,写得挺详细的。

?Insomnia官方文档.

?Insomnia基本使用方法总结博客.

3. 为什么使用Insomnia

?成熟的接口测试工具非常多,诸如Postman、Jmeter、国内的Apifox,这些工具的功能都十分完善、生态也比较丰富,为什么我们要用偏冷门的Insomnia呢个团队在做技术选型时,需要考虑的东西很多,例如:易用性、契合度、技术成本、经济成本、是否易于二次开发等等。易用性方面,Insomnia与同类工具类型,都非常容易上手,相关文章虽少,但官 内容比较全面;成本方面,Insomnia免费版就能很好的通过Git进行团队协作,而同样的功能在Postman、apifox(不花钱只有sass版,不太适用)都是需要付费的,节约成本也是老板最喜欢看到的;二次开发方面,Insomnia的相关插件可以使用Nodejs编写,难度也不是太高;

?我这以导入swagger为例:

?打开swagger 页后,点击图上框出来的连接,会显示Json格式的swagger,直接复制到Design模块就导入完成了。

?导入后,面临数量众多的接口,我们可以通过左侧的path进行手动点击查找或者搜索

?如图中的hash、uuid、各种类型的时间戳,除此之外,我们还可以二开自定义一些tag,例如一定范围的随机数。

?回到接口依赖问题,如果我们要将一系列的接口串联起来,我们就需要选择图中的Response Function。这个功能可以让下游接口去获取上游接口的response body的单个属性、整个response body、response header、请求的url。

? 我们最常用的就是获取response body的单个属性,在tag里,我们可以通过Jsonpath或Xpath来对response body进行筛选(用哪种方法筛选取决于返回的是Json还是XML)。筛选完成后,我们可以在Live Preview里预览筛选结果。最后我们需要在Trigger Behavior中设置,下游接口何时去请求上游接口,Insomnia提供了4个方案。

?(1)Never resend request,顾名思义,永不重新请求,以最初的为准

? (2)No History – resend when no responses present

? ? ? 在Insomnia中,请求完成后,会生成response history,用户可以查看history、删除当前response、清除所有response history。

7.那些年遇到的坑

?开源软件是一座围城,外面的人想进去,里面的人想出来。

?Insomnia这款软件真是让我又爱又恨。我爱她简洁又不是格调的外表,爱她能为我的boss节约经费,爱她模块明确、功能健全,但世上没有完美的软件,就像青春总是充满着遗憾。

7.1 使用 template tag处理上下游接口之间的参数依赖时,灵活性较差

?虽说template tag是insomnia最具特色的功能,没有之一,但成也萧何,败也萧何。

?比如:上游接口返回数据

?此时,下游接口需要state为0的数据的id,如果使用template tag,并用如下JsonPath进行筛选:

?筛选结果是个array,并无法进一步选择:

?template tag显示 :

?issue里已经有兄弟伙提过这个问题了,奈何官方貌似兴趣不高。。。本人也是暂时没有想出替代方法。

7.2 unit test里无法获取环境变量

?例如:在编写一些高级查询的单测时,需要校验请求的参数与响应的结果是否相符。

?但在unit test里,没有找到能获取request参数的api;也无法像postman一样,将查询的条件存在环境变量中,并通过pm.getEnvrionment()这样的api来获取,并做断言校验。

7.3 测试用例无法调整顺序

?在做接口自动化时,由于接口之间有依赖关系,因此哪个接口先跑,哪个接口后跑是需要精心设计的,这样才能保证整个接口自动化的成功率。但是Insomnia貌似不支持调整创建好的用例的顺序。因此后期迭代时,修改用例就比较痛苦了。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月6日
下一篇 2021年4月6日

相关推荐