微服务下的Mock技术-WireMock

引言

微服务架构下,进行 Restful API 的接口开发和测试工作中,特别是在诸如前后端分离、多个不同系统对接的场景下,对接口进行 Mock 是接口调测的必要手段。

本文就向大家介绍一个非常便于使用同时也非常强大的 Mock 工具:WireMock。

WireMock 简介

WireMock是一个开源的测试工具,支持HTTP响应存根、请求验证、代理/拦截、记录和回放。最直接的用法:

为Web/移动应用构建Mock Service

快速创建Web API原型

模拟Web Service中错误返回

录制HTTP请求和回放

生成 Mock API

生成mock api有两种方式:一种是新建mapping文件,另一种是通过WireMock的api。其中第一种可以永久保存下来,第二种是暂时生成API,待下次build container后,会被清除。

下面将对这两种方式进行详细介绍。

方式一:

一个 Mock 的 API 对应一个 json 文件,该文件放在mapping/目录下。

示例文件如下:

{
“request”: {
“url”: “/QueryPWIDByLoginname”,
“method”: “POST”,
“bodyPatterns”: [
{
“equalToJson”: “{ \”loginName\”:\”17317920860\”}”,
“ignoreArrayOrder”: true,
“ignoreExtraElements”: true
}
]
},
“response”: {
“status”: 200,
“body”: “{\”code\”:\”0\”,\”data\”:{\”AccountID\”:\”\”,\”LoginNameType\”:\”2\”,\”LoginStatus\”:\”1\”,\”PWID\”:\”300111000156276629\”,\”PWIDType\”:\”wanda\”,\”Status\”:\”1\”,\”SysFrom\”:\”wandacloud\”},\”msg\”:\”success\”}”,
“headers”: {
“Content-Type”: “application/json; charset=utf-8”,
“Date”: “Fri, 18 Aug 2017 07:05:05 GMT”
}
}
}

mapping 文件可以手动写,也可以通过 WireMock 的 record 功能生成。

方式二:

使用record 功能生成mapping。

WireMock Server提供了record UI, 访问地址:

http://10.214.169.111:31703/__admin/recorder/

下面以登录注册模块QueryPWIDByLoginname功能为例:

打开record UI;

需要mock的URL填入:http://10.214.169.111:30303 ;

点击 Record按钮;

之后向 http://10.214.169.111:30303 的发起请求,

可以用http://10.214.169.111:31703来代理

示例演示

访问:

curl -X POST “http://10.214.169.111:31703/QueryPWIDByLoginname” -H “accept: application/vnd.response+json” -H “content-type: application/json” -d “{ \”loginName\”: \”17317920860\”}”

返回:

{
“code”:”0″,
“data”:
{
“AccountID”:””,
“LoginNameType”:”2″,
“LoginStatus”:”1″,
“PWID”:”300111000156276629″,
“PWIDType”:”wanda”,
“Status”:”1″,
“SysFrom”:”wandacloud”
},
“msg”:”success”
}

点击Stop按钮,结果如下:

WireMock 项目构建

代码架构:

启动:

访问:

访问地址:http://ip:port//api/

TestOps 本周课程:

_
时间

课题

周一

21:00

腾讯课堂

《敏捷测试从零开始》

周六

20:00

腾讯课堂

《测试开发从零开始》

java篇

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/186715.html

(0)
联系我们
联系我们
分享本页
返回顶部