• 14
  • 14
分享
  • 超强工具:使用Json Server配置动态数据——软件测试圈
  • 曼倩诙谐 2021-08-31 09:53:04 字数 2430 阅读 1604 收藏 14

  应用场景

  测试用例一遍一遍的执行,没有新意了,没有Bug了。突然来了一位小白,同样的用例就“逮”着了一只Bug。一回放,原来手误,输入了不同的测试数据,误打误撞。

  这也证明了测试数据在测试执行中起到的关键作用。输入的数据不同,得到的结果就不一样。Bug是与你擦肩而过,还是不期而遇呢?有时候还真的就在你手指轻弹、输入数据的一瞬间。

  今天的强调无非是想给大家介绍一款好用的API Mock 服务器 工具,以便大家在测试中更加方便地配置自己的动态数据。

  温馨提示

  如果您要按着示例一起做,请务必配置如下工具。

  结尾的用例主要是结合Rest-Assured来介绍Json Server的基本功能,对于不了解Rest-Assured 的小伙伴请做些额外功课吧(可以参考我之前写的Rest-Assured的文章,有详细的配置与应用步骤)。

  ·IDE:IntelliJ IDEA

  ·语言:Java

  ·API 测试开发:Rest-Assured

  ·API 服务器:Json Server

  ·测试框架:TestNg

  ·项目类型:Maven

  知识重点:

  ·Json Server服务器安装、配置与应用

  ·API自动化测试:Rest-Assured

  配置 Json Server

  下载安装node js

  通过node 的官方网站https://nodejs.org/zh-cn/download/,下载对应的安装包或二进制文件。示例中我下载的是 Windows 64 位二进制文件 (.zip),解压以下运行命令 node -v 在对应的解压目录下,如果配置正确,你会得到当前node的版本号。

1-1.png

  安装 Json  Server

  在node 对应的安装目录下,执行命令:npm install -g json-server 确保你的网络是畅通的,安装进度会开始下载对应的文件。

1-2.png

  安装进度结束以后,执行命令: json-server  -v 通过检验安装版本来确保json-server 安装成功。

1-3.png

  运行Json Server

  确认安装无误后,执行命令: json-server --watch db.json。

  从运行的界面上可以得知:

  ·第一次运行由于没有db.json, json server 会自动创建一个默认的db.json文件,这个就是我们的数据库文件。

  ·json server 当前启动服务器端口是3000。

  ·Resources: 当前可以被访问的数据URL,与db.json是对应的。

1-4.png

  通过浏览器访问Json server

  打开浏览器,输入 当前启动的Json server 地址: http://localhost:3000 会打开对应的Json server的主页。

  下面两部分内容在Resources 章节需要我们注意:

  1.当前可以被访问的数据路径参数,与db.json是对应的。

  2.当前被访问数据可支持的方法:get、post、put、patch、delete、options (这点是我最喜欢的,有了这些方法的支持,我们的数据就活了起来)。

1-5.png

  了解db.json

  1.验正访问路径参数:现在为了验证数据访问路径是否正确。去到node 的安装目录。

  此时,这里会有一个db.json文件。打开此文件,通过对比,我们可以确认Resources显示的路径参数与db.json文件里完全吻合。

1-6.png

  2.添加路径参数:现在我们手动添加一个新的访问路径参数newPath 在db.json文件末尾,添加完成后,保存文件。

  刷新一下json server 主页,在Resources下会多一条路径参数。

  同时您也可能会注意到json  server 启动的命令行窗口,json server不需要重新启动,会自动的re-load 修改过的db.json(注意,文件格式如果写错了,db.json 装载会出错)。

1-7.png

  发送get请求

  在Json server 浏览器主页,点击Resource > /newPath,这相当于我们对Json server http://localhost:3000/newPath发送了一个get 请求,会得到Json server 的数据返回(验证一下是不是你刚才添加的数据)。

1-8.png

  集成Rest Assured

  利用put 方法修改数据

  如示例中,我们利用Rest assured 的put方法,在原有的newPath的数据结构中,添加一个新key“updateTime”,同时赋于一个动态的当前时间。

  然后,再利用Rest assured 的get方法,读取被更新后的数据,验证key “updateTime”显示在新返回的数据结构中。代码如图所示,这里就不赘述了。

1-9.png

  运行测试

  在IDE中运行刚才写好的用例,如果配置无误,用例运行成功。在对应的log里,可以看到put 方法请求的数据。

1-10.png

  通过浏览器,刷新一下http://localhost:3000/newPath页面,可以验证到刚才更新的数据。

1-11.png

  打开db.json 文件,newPath对应的数据结构也已经更新。

1-12.png

  总结

  综上所述,我们已经搭建了一个非常灵活的、轻量级的Json server,这样以后就可以非常轻松自如地把测试数据放在这个服务器上,在写自动化测试脚本时,同时利用自动化代码进行动态更新、准备测试数据,以备测试执行步骤实时有效地输入我们需要的数据。

  摆脱单一不变的静态数据准备、耗时耗力的文本数据更新维护工作。

  大胆地发挥一下你的想像,不仅仅只是为API测试服务,它可以应用在很多测试场景之下,特别是在多环境应用程序的配置文件,都可以结合一定规则与业务逻辑让Json server为你的自动化测试事半功倍。



作者:胡军英   

来源:51Testing软件测试网原创

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   赫芬顿邮报创始人阿里安娜?赫芬顿(Arianna Huffington)和 OpenAI CEO 萨姆?阿尔特曼(Sam Altman)宣布联合创办一家名为 Thrive AI Health 的公司,旨在利用人工智能技术帮助人们养成更健康的生活方式。  Thrive AI Health 由赫芬顿的健康公司 Thrive Global 和 OpenAI 创业基金会共同出资成立,致力于打造一款“AI 健康教练”,根据用户在睡眠、饮食、健身、压力管理和社交方面的情况提供个性化建议。该公司 CEO DeCarlos Love 此前曾在谷歌旗下可穿戴设备公司 Fitbit 担任健身和健康体验负责人。...
            0 0 109
            分享
          • 一、系统监控1、free命令free 命令能够显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存语法:free [param]param可以为:-b:以Byte为单位显示内存使用情况;-k:以KB为单位显示内存使用情况;-m:以MB为单位显示内存使用情况;-o:不显示缓冲区调节列;-s<间隔秒数>:持续观察内存使用状况;-t:显示内存总和列;-V:显示版本信息。Mem:表示物理内存统计total:表示物理内存总数(total=used+free)used:表示系统分配给缓存使用的数量(这里的缓存包括buffer和cache)free:表示未分配的物...
            2 4 3939
            分享
          •   摘要:  在测试性能时,我们可以尝试编写一个“性能等式”,以便检查影响性能的每个因素。但是,就算逐一检查方程式里的每一项也并不总是能看清整体情况。有些影响性能的因素很容易被忽略。测试更多的是发现系统的行为,而不是对一些期望行为的样本进行验证。  许多团队为了查看系统是否能够满足业务需求,会搭建一套基于服务器和网络基础设施的“测试平台”,开发一些模拟用户请求的脚本,并运行这些脚本来测试应用程序。为了确保系统有额外的容量,他们会将事务数增加一倍。  但这种方法似乎只是有时起作用,这意味着它在其他时候失败了。而解释它为什么成功或失败也同样是件困难的事。  让我们先仔细看看构成“性能等式”的部分:...
            0 0 1297
            分享
          • 前言你是一个测试,你们团队目前开发模式是前后端分离。某一天,版本V1.0接口评审完,发布在了swagger上,前后端各自进行开发。此时你根据接口文档将新接口迁移到JMeter上,然后开始编写接口测试用例。过了几天,前端先提测了APP,怎么测试前端效果呢, 你想到使用charles抓包,造一些假数据,然后改响应数据。然而界面情况有点多,数据准备起来有点繁琐。这时前端同学向你介绍了Mock工具Rap,他们把接口放在上面,编写mock规则,获得模拟数据进行前端调试。虽然数据也不是很真实,但是类型和结构是对了。又过几天,后端终于提测,连接到测试服务器上运行接口用例,有个接口报错,前端打开价格页也有些显...
            0 0 1940
            分享
          •   小编看到过这样的一个帖子,根据题主的描述可以看出来他是一名拥有十年工作经验的功能测试人员,目前掌握的技能还只是简单的功能测试,没有什么代码能力,面对功能测试的职场窘境,正在选择下一步该转测试开发还是软件开发?其实现在像题主一样处境的人不在少数,这就是行业技术发展的趋势导致。开篇之前,小编直接亮明观点,在测试开发和软件开发之间,选择前者的发展会永远比后者好。  这篇文章将从以下三个方面阐述我的观点:  ·功能测试为什么不建议选择软件开发?  · 为什么功能测试会产生转行软件开发的想法?  · 功能测试如何晋升测试开发?  一、功能测试为什么不建议选择软件开发?  表面看,...
            0 0 1538
            分享
      • 51testing软件测试圈微信