mock测试_测试工具链——高效构建Mock服务

d049794fb2acb7667f2cf2f01be9a3a8.png

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

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

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

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

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


Wiremock安装

df5efd42e63ade984e19a62d14c173ec.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启动

38e9b8443661bb65875622cfe3fa2f03.png

在命令行中运行:

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

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

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

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

4b6b66c3f5a128bd451362981b9e08d0.png

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

096fe014cbfc66fcbc0658c857852b80.png

TouTiao.json

06eabfe4d6c31cb4e260033c549079af.png

TouTiao_Detail.json

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

c277b11a45061a2b7310a2b4bb9bacc1.png

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

96ef8de3f12eda8e2db8c3c7f15d7766.png
fe3bf73f75e9ca7eeeea7e7335e49760.png

Wiremock服务创建

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

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

URL匹配方式-精确匹配

16462c9db6a4a5d10ea476ff10727ce7.png
e58923d90d1395705c5ea9e8a7303746.png

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

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

b93a36034f625f62658c6e388b2a29cd.png
ad83998f98d98698a823dbd724dcc423.png

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

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

8308ef6d8340c5af22886ef0c7a6ed09.png
8ff46f002f804cc278c6ad699d06ffb1.png

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

ab5e34cf61ec0da60ae80069955b5239.png
013e86772210b7a59d5300f7f4c7555c.png

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

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

da30944b9e75f5c0549a3d6429b741c3.png
889031890ca5b47ca99487b2990c4603.png

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

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

150e5ed690ff497e90445cc6101d0eef.png
e58e20fae5295b069addd6dc531c2d76.png
若对你有所帮助,欢迎大家评论、留言。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值