首页 > 属性匹配工具_测试工具链——高效构建Mock服务

属性匹配工具_测试工具链——高效构建Mock服务

e48ea616c57b563b85f9fffbe18c384a.png

现在,WEB系统的开发一般都采用前后端分离的架构,以及部分公司采用“前台-中台-后台“的组织架构,难免会出现开发进度不一致的情况,导致系统联调或测试需要等到所有依赖开发完成后才能够进行,为不影响软件开发、测试进度,消除等待浪费,因此引入了Mock服务。

本文主要介绍的Mock工具是Wiremock(一种开源的测试工具,Mock工具有很多种),其支持HTTP响应存根、请求验证、配置响应延迟、代理/拦截、录制和回放。

常见的Mock应用场景有如下几个:

  1. 依赖接口尚未开发完成,需要进行接口联调或自动化测试开发;
  2. 接口返回不满足目前需求,目前的接口虽然已实现,但个别字段/返回不满足目前的测试要求。

同时注意不要过于的依赖Mock接口服务。当实际接口开发完成后,测试人员需要对实际接口重新进行测试,避免出现实际接口与Mock接口不一致等情况,影响产品质量。同时可以延伸了解下契约测试,其测试理念有助于我们正确的理解Mock服务应用。接下来介绍WireMock的具体使用。


Wiremock安装

0ee9c77a9f466534dd811eb9c5f8e634.png

最新下载地址(需要Java JDK环境):

http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/2.21.0/wiremock-standalone-2.21.0.jar

官网地址:

http://wiremock.org/

Github地址:

https://github.com/tomakehurst/wiremock

WireMock启动

4ee55a7cf3c0db457c76e4b11a2ca6e3.png

在命令行中运行:

java -jar wiremock-standalone-2.21.0.jar -port 9999 --verbose

启动后在该目录下生成__files 和 mappings两个空的文件夹,如下图。

  • __files :是存放上传、下载、录制文件;
  • mappings :存放request、response、url映射等信息;
dce688a918ebc5c818e4de69803c728b.png

举一个简单例子,我们在对应目录下分别创建如下两个文件。

a25edf21d2cb3402099d5b33d7ba8e5c.png

文件内容如下,然后我们再次运行启动命令,加载该mock服务。(注意,添加修改mapping文件后,需要重启服务才能生效。)

c1ba871c8cd014feb2ca4b1c7833c22a.png

TouTiao.json

931cba6a3dadb6b755b588748a9e4dc5.png

TouTiao_Detail.json

此时,在浏览器中输入http://localhost:9999/api/toutiao/,会看到该接口的响应内容,如下图,此时我们完成了/api/toutiao/接口的Mock服务创建。

6cb02dd1eb88b66c37cd25b080af10db.png

同时也支持xml等格式请求、响应体,如下。

e569ad636ea2bec64b0ff9e91cfeaea0.png
c31b9ac8e32264f2ea1a68e711a61e20.png

Wiremock服务创建

接下来主要介绍在创建WireMock服务的时候,常用的几种方法,主要分为两部分(更多方法可参考WriemocK官网)。

  • URL匹配方式
  • 请求体/响应体匹配方式

URL匹配方式-精确匹配

eff7c4d42bd41d05cda98edcac2991ed.png
71d04948cf70de66200ff9b03ce53778.png

URL匹配方式-模糊匹配(正则匹配)

如果URL符合正则匹配规则,则视为匹配。

db85c874d68e6f8ea3e5d4813414344c.png
ac2588df3bf834cd0aedd7c85997d9db.png

请求体/响应体匹配-字符串相等

如果属性值等于预期值,则视为匹配。

190053cb995985fe5df04bf14af900cb.png
62927b175d89d0eb3a7f45ed926920eb.png

请求体/响应体匹配-JSON相等

586fcd22665b7e176f11636636a966fa.png
581940eb49cea92a8298e9fceea78702.png

请求体/响应体匹配-JSON属性包含(多级嵌套JSON)

如果属性存在于JSON中,则视为匹配。

6f3d8f043ca1817dc161951a1fc79322.png
7abbbbe1b591a3062d314f836215e1b5.png

请求体/响应体匹配-JSON属性值相等(多级嵌套JSON)

如果属性值等于预期值,则视为匹配。

a8f6ad9d579fda8903d1aee39943bea4.png
54dfb63da63b5538f23f41c2e740ff94.png
若对你有所帮助,欢迎大家评论、留言。

更多相关:

  • UE商城资源 Motion Symphony 运动匹配插件 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –Motion Symphony 1.05 4.26运动交响曲插件 插件大小解压后:346M 资源大小共 2G 含官方文档 和官方使用视频教程(共100分钟 1920X...

  • 原文地址:http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html 正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设...

  • MQTT topic匹配规则 原文连接: https://blog.csdn.net/JiangCheng817/article/details/81333893 内容: 主题层级分隔符 “/”: 表示层级关系 单层通配符 “+”: 订阅消息时使用,匹配一层主题如 a/+ 匹配诸如 a/b a/c 但是不能匹配 a/b/c,特...

  •  1.特殊字符 ^匹配输入字符串的开始位置$匹配输入字符串的结尾位置( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。+匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。?匹配前面的子表达式零次或一次...

  • 经常我们在测试接口的返回报文的时候,可能是存在于不同网页的跳转过程中,但是浏览器默认的设置是只要一跳转页面,上一个页面的请求记录就没了,是不是很烦人,有时候我们还有以迅雷不及掩耳盗铃之势把浏览器的接口监听按钮暂停掉,或者截屏,非常的难受,于是这样设置一下,切换页面的跳转情况下,接口记录依旧会保存了  ...

  • 《团队合作大坑合集》_←你挚爱的强哥→的博客-CSDN博客1、百分号无限循环小数2、小数四舍五入计算错误3、写死了年份导致跨年无法选择最新年份4、悄悄修改内外网访问限制导致外网接口不能访问5、定位索引城市的地理坐标,定位到了同名的其他城市6、更新包的时候没传完就关电脑7、前后端绑定字段不统一,字段类型不统一...https://s-z...

  • 文章目录1. 基本的多态实现2. 空接口与断言3. Go接口的最佳实践...

  • lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现由函数式接口定义的唯一抽象方法使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例可以将 lambda 表达式视为一个对象,可以将其作为参数传递1. 函数式接口 函数式接口是仅含一个抽象方法的接口,但可以指定 Object 定义的任何公有...

  • 接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节。 接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构。   声明: 接口类型是由一组方法签名定义的集合 type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表1 方法名2( 参数列表2 )...

  • 蓝牙HC-05与HC-06对比指令集 高电平-》AT命令响应工作状态     低电平-》蓝牙常规工作状态 <重新上电表示完成复位> HC-05 可以主从切换模式,但是HC-06虽然可以做主机也可以做从机,但是不能切换模式 模块进入AT响应状态:波特率:9600 数据位 :8位 停止位:1位 无校验位         ...