zoukankan      html  css  js  c++  java
  • postman 的 “替代者” postwoman 功能体验—从入门到放弃

    在平时的工作中,无论是开发工程师还是测试工程师,在做接口测试时都应该用过postman。postman起初是chrome上面的一个插件,后来逐步演变成桌面应用程序,使用起来也便捷方便了不少。

    postman除了能请求接口这样的基本功能外,还有一些高级的用法,比如:设置环境变量、对接口返回值进行断言测试、设置接口前置和后置脚本、Mock接口、接口运行器设置接口循环执行次数(注意,这里的执行并不是并发执行,而是顺序执行)等等。不过在真实的工作场景中,我们更希望整个团队能共享同一份接口配置,这样有助于接口联调和测试,提高工作效率。

    在postman中增加了Team的概念,可以为每个团队创建对应的工作空间,然后可以邀请对应的同事加入到team中,这样所有人都可以看到team 工作空间下的接口。只不过postman对普通版本做了限制,对team中接口的数量、Mock接口调用次数等都是有明确次数要求的。如下图所示:

    对于目前的项目,接口数量分分钟都能达到上限,因此为了比较好的体验,付费是个选择。但是postman的收费相对比较贵,价格表如下图所示:

    postwoman就是为了对抗postman的收费而出现的:“你收费,我偏不收费,不仅不收费,我还开源”。在github上postwoman的描述信息是:“A free, fast and beautiful API request builder (web alternative to Postman) used by 62k+ developers.”。翻译成汉语就是:“一个开源、快速并且漂亮的接口请求器,已经被6万2千的开发者使用,是Postman的一个web端的替代方案”。

    接下来我们来看看postwoman的使用体验以及功能设计,是否真的如它说的这么厉害:

    安装postwoman

    postwoman主要是使用vue开发的,它有两种安装方式,一种是使用命令行npm命令进行安装,另外一种是使用docker。我个人推荐大家使用docker的方式安装,没啥,主要是方便,不需要再去装其他工具。可以直接拉取postwoman的镜像,然后运行即可,命令如下:

    $ docker pull liyasthomas/postwoman  # 拉取postwoman的镜像
    $ docker run -p 3000:3000 liyasthomas/postwoman  # 启动镜像
    

    执行完之后,如果没有报错,就可以直接访问postwoman了,默认的端口号是3000,如果你在自己电脑上部署,可以直接通过http://ip:3000进行访问。其主页面如下所示:

    postwoman的主功能介绍

    postwoman主要有五大功能(如上图所示),分别是:

    • Home(首页)
    • RealTime(实时请求)
    • GraphQL(API查询语言)
    • Document(文档/接口描述)
    • Settings(设置)

    下面分别对上面的这5个大类功能做介绍:

    Home(首页)

    首页主要是对普通的http(s)接口进行请求和管理。这和postman的请求接口的功能类似,都可以创建Collections集合、创建环境变量、编写Pre-request Script和对结果进行断言校验的Tests等等。

    不过,需要注意的是,postwoman并没有使用数据库,但会将用户创建的数据保存到浏览器的local Storage中。也就是说如果你清除了浏览器缓存,那么之前保存在local storage数据也将被清理掉。

    需要说明一点,postwoman可以使用github和Google账号登录,但是我本地验证的时候没办法拉起来登录授权页面(F12看的应该是某个接口请求失败,网络原因),大家可以自己在本地实验下。

    RealTime(实时请求)

    这个应该是postwoman特有的功能,可以用于长连接服务的请求验证,比如:WebSocket(以wss://开头)、SSE、Socket.IO、MQTT。这其中我们应该对WebSocket和MQTT比较熟悉,MQTT请求的界面展示如下所示:

    可以看到如果mqtt连接建立之后,还可以订阅某个topic,或者向某个topic发送Message,这个功能在平时工作中还是比较常用的。比如:之前MQTT都是下载一个专门的桌面工具才能正常操作和查看。

    GraphQL(API查询语言)

    这里牵扯到一个知识点GraphQL,它是一种由facebook提出的用于API查询的语言。GraphQL有什么使用场景呢?比如我们在平时的工作中会碰到某些接口,我们想要请求某个信息,但是它却返回了很多额外的信息。比如:一个商品菜单请求接口,本来只需要返回商品的基本信息等,但是它有可能会将商品的创建者、用户评论、详细描述等信息一并返回。

    造成这种情况的原因有很多,比如为了兼容PC端和移动端接口,所以接口越设计越庞大。或者某些奇葩的需求,需要根据不同的条件,商品展示不同的样式内容等。那能不能根据我们请求参数的不同,返回不同的内容呢?GraphQL就是用来干这个的,它官方文档有一句话:“ask exactly what you want.”。

    在postwoman中举了一个具体的例子,如下图所示:

    Document(文档/接口描述)

    这个功能可以将任何导出的postwoman collection导入进来,然后以文档的形式查看,如下所示:

    个人感觉这个功能设计用处不是特别大,我唯一想到的场景是,可以将其他人导出的collection导入进来,我们可以查看基本的接口定义。

    Settings(设置)

    设置模块没有什么特别的地方,都是比较基础的配置,比如:可以配置账号登录、整体界面的主题色、设置启用代理。

    总结

    坦白讲,postwoman并没有我想象中的那么强大,我起初以为它应该提供PostMan付费版的所有功能,这样对抗postman才有意思。不过postwoman也有一些好用的功能,比如:可以测试mqtt和websocket、支持GraphQL。另外,postwoman比较好的一点是它是开源的,因此我们可以基于它做一些定制化,制定适合公司自己的接口测试平台。

    但是postwoman最让我失望的是它没有用到数据库,只是将接口数据存到了localStorage中,这样会非常不方便,没办法做到团队间数据同步。另外,它也没有提供对接口做数据权限的控制(没用到数据库,也没办法控制其实)。

    不过,如果你仅仅是自己使用,并且不想再安装个postman客户端软件,那么postwoman也是不错的选择。

  • 相关阅读:
    java代码配置sqlserver数据源及连结的demo例子
    mysql配置 是否忽略大小写 lower_case_table_names
    查询30天以内的数据SQL
    nginx
    PCB随笔
    chengxu
    Powershell
    对象模型
    Thinking UML
    排序初级排序
  • 原文地址:https://www.cnblogs.com/zhouliweiblog/p/13327901.html
Copyright © 2011-2022 走看看