Insomnia:开源Rest client使用心得_insomnia使用教程-程序员宅基地

技术标签: 接口  restful  开发工具  软件测试  # 测试工具  

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编写,难度也不是太高;

集成了Git
 总结一下,Insomnia这款软件,免费版基础功能强大、支持团队协作、方便二开。

4. Design模块

 作为测试人员,刚接触这款软件时,更多的是使用Debug、Test模块,Design使用得很少。软件原话写的是:“Supported version fields are swagger:‘2.0’ and those that match openapi:3.0.n”。简而言之,Design模块中可以导入swagger、openapi用于共享api规范。

导入swagger

 我这以导入swagger为例:

 打开swagger网页后,点击图上框出来的连接,会显示Json格式的swagger,直接复制到Design模块就导入完成了。
链接到Swagger UI 3.x中的API定义
 如果swagger报错的话,导入后Insomnia同样也会显示相关的错误信息,我们可以通过提供的details定位到错误的地方

swagger错误提示

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

左侧

5.Debug模块

 这里我只记录一些总结的进阶用法。

5.1 环境设置

 Insomnia的environment分为base和sub两种,base则是针对整个工作区的环境,sub则是用户在base基础上自己新建的。因此我们可以将一些工作区内公用的、稳定的variables定义在base environment中,而一些自定义的、常变化的则可定义在sub environment中。

 其次,sub environment中还包含普通的和private两种,private的特点是“will not be exported or synced”,导出以及上传git时,private environment是不会包含在里面的。

5.2 request chain相关记录

 在做接口测试时,我们最常遇到的就是接口依赖。与自己编写代码相比,使用工具实现接口依赖以及相关自动化就没那么灵活。同样,在使用Insomnia实现接口自动化时,也有一些坑,这个稍后再提。

 在Insomnia中,我们通常使用template tags来解决接口之间的依赖问题。tag可以说是这个软件的一大特色,功能比较强大,除了前面提到解决接口依赖,他还提供了一下功能:

tag的几种类型

 如图中的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。

History

  (3)When Expired – resend when exsting response has expired

    设置一个过期时间,一旦过期则重新请求。

  (4)Always resend,顾名思义

 如何设置,需要参考接口需要调用的参数的特性。如果是一个删除接口,tag里需要去获取一个id,这里就需要保证这个每次返回的id都是存在的,且状态是可以删除的。选择前两个则无法很好的保证接口返回值正确。

6.Test模块

 这个模块测试人员用得较多,可以通过创建一些测试套件、测试用例、编写一些断言,实现接口的自动化。

 支持Js编写断言,语法也比较简单,具体可以参考: Chai Assertion Library.

 在用例里输入"send",则会弹出发送请求的窗口,在编写断言需要其他接口支持时,这个功能比较有用。

在Test中发送请求

7.那些年遇到的坑

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

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

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

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

 比如:上游接口返回数据

"records":[
				{
    
					...
					"id" = "123",
					"state" = 1,
					...
				},
				{
    
					...
					"id" = "456",
					"state" = 0,
					...
				}
				{
    
					...
					"id" = "789",
					"state" = 0,
					...
				}]

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

$.records[?(@.state==0)].id

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

[
	"456", "789"
]

 template tag显示 :

Returned more than one result: $.records[?(@.state==0)].id

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

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

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

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

7.3 测试用例无法调整顺序

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41587017/article/details/116479621

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签