• 0
  • 0
分享

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

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

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

1-1.jpg

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

-2.jpg

  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进行访问。其主页面如下所示:

1-3.jpg

  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、http://Socket.IO、MQTT。这其中我们应该对WebSocket和MQTT比较熟悉,MQTT请求的界面展示如下所示:

1-4.jpg

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

  GraphQL(API查询语言)

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

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

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

1-5.jpg

  Document(文档/接口描述)

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

1-6.jpg

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

  Settings(设置)

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

  总结

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

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

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


作者:玄柯成长社    

来源:http://www.51testing.com/html/98/n-7796398.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   今天,2024 年美国总统大选正式开始,爱荷华州将率先举行党团会议。生成式人工智能公司 OpenAI 决定利用今天来概述其计划如何防止一些团体利用其工具(如 ChatGPT 和 DALL-E)来创建和传播"深度伪造"和其他虚假信息,这些信息可能会被用来破坏美国总统大选,甚至是今年全球各国密集举行的大选。  OpenAI 在一篇博文中表示,它将确保其工具被用于"准确的投票信息、执行有节制的政策和提高透明度"。它补充道:  我们有一个专门负责选举工作的跨职能部门,汇集了我们的安全系统、威胁情报、法律、工程和政策团队的专业知识,以快速调查和解决潜在的滥用问...
            0 0 885
            分享
          •  GET方法和POST方法传递数据的异同http请求方法get和post是最常被用到的两个方法,get常用于向服务器请求数据,post常用于提交数据给服务器处理。 GET方法其实也可以传递少量的数据。 但它存在以下问题:1)GET 方法不包含body,因此以在URL中拼接字段的方式传递数据, 2)GET方法中的URL参数会被显示到地址栏上,存在安全问题3)传递的数据只能是键值对,无法传递其他类型的数据 因此出于传递大量、多种类型的数据和安全性的考虑,上传数据常使用post方法。POST方法如何传递数据POST方法提交数据给服务器,涉及到Content-Type和消息主体编码方式两部分...
            7 7 1184
            分享
          • 一、元素操作方法方法:1、.send_keys()  # 输入方法 2、.click()  # 点击方法 3、.clear()  # 清空方法注意:在输入方法之前一定要清空操作!!# 导包 from time import sleep from selenium import webdriver # 实例化浏览器 driver = webdriver.Chrome() # 打开网址 driver....
            1 2 2470
            分享
          • 一、什么是真正绕过浏览器检测?https://bot.sannysoft.com 这是chrome的真正检测网址为什么要强调绕过webdriver属性检测?有些网址通过webdriver检测使得Selenium无法获取元素、无法控制按钮等情况1、PC环境打开chrome的效果一般来说普通的启用webdriver即使也是会标红的,以上是打开本地chrome的检测属性2、 普通的启动webdriver上码from selenium import webdriver class WebDriverChrome(object):   &nbs...
            0 0 7350
            分享
          •   一个新人进入一个新的体系,有必要建立一个框架结构的思维方式,我就来尝试给你搭搭框架,并且尽量使用比较通俗的表达方式。  质量管理工作分为哪些部分?  首先我用一张图简单给你说说质量到底是一份怎样的工作,主要分哪几块内容:可能很多业内人士看到要说我的区分方式太简单粗暴了,但是过于细化对于初学者来说可能根本就看不懂,另外我没有把领导职能加入进去  既然做质量你必须搞清楚你现在是做实物还是做体系,一个简单的区分方法(注意:不是很科学,但是对于新人来说比较容易理解)就是,实物的主要工作面向产品和过程,体系的主要工作面向流程和审核。  一个新人加入了质量部的大团队以后,如果有得选那么我的建议是先走实...
            0 0 398
            分享
      • 51testing软件测试圈微信