现在,WEB系统的开发一般都采用前后端分离的架构,以及部分公司采用“前台-中台-后台“的组织架构,难免会出现开发进度不一致的情况,导致系统联调或测试需要等到所有依赖开发完成后才能够进行,为不影响软件开发、测试进度,消除等待浪费,因此引入了Mock服务。
本文主要介绍的Mock工具是Wiremock(一种开源的测试工具,Mock工具有很多种),其支持HTTP响应存根、请求验证、配置响应延迟、代理/拦截、录制和回放。
常见的Mock应用场景有如下几个:
- 依赖接口尚未开发完成,需要进行接口联调或自动化测试开发;
- 接口返回不满足目前需求,目前的接口虽然已实现,但个别字段/返回不满足目前的测试要求。
同时注意不要过于的依赖Mock接口服务。当实际接口开发完成后,测试人员需要对实际接口重新进行测试,避免出现实际接口与Mock接口不一致等情况,影响产品质量。同时可以延伸了解下契约测试,其测试理念有助于我们正确的理解Mock服务应用。接下来介绍WireMock的具体使用。
Wiremock安装
最新下载地址(需要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启动
在命令行中运行:
java -jar wiremock-standalone-2.21.0.jar -port 9999 --verbose
启动后在该目录下生成__files 和 mappings两个空的文件夹,如下图。
- __files :是存放上传、下载、录制文件;
- mappings :存放request、response、url映射等信息;
举一个简单例子,我们在对应目录下分别创建如下两个文件。
文件内容如下,然后我们再次运行启动命令,加载该mock服务。(注意,添加修改mapping文件后,需要重启服务才能生效。)
TouTiao.json
TouTiao_Detail.json
此时,在浏览器中输入http://localhost:9999/api/toutiao/,会看到该接口的响应内容,如下图,此时我们完成了/api/toutiao/接口的Mock服务创建。
同时也支持xml等格式请求、响应体,如下。
Wiremock服务创建
接下来主要介绍在创建WireMock服务的时候,常用的几种方法,主要分为两部分(更多方法可参考WriemocK官网)。
- URL匹配方式
- 请求体/响应体匹配方式
URL匹配方式-精确匹配
URL匹配方式-模糊匹配(正则匹配)
如果URL符合正则匹配规则,则视为匹配。
请求体/响应体匹配-字符串相等
如果属性值等于预期值,则视为匹配。
请求体/响应体匹配-JSON相等
请求体/响应体匹配-JSON属性包含(多级嵌套JSON)
如果属性存在于JSON中,则视为匹配。
请求体/响应体匹配-JSON属性值相等(多级嵌套JSON)
如果属性值等于预期值,则视为匹配。
若对你有所帮助,欢迎大家评论、留言。