微服务下的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篇

微信号 : TestOps

知乎:@TestOps云层

(0)

相关推荐

  • Asp.netCore RESTful WebApi 小结

    上篇文章记录了WebApi的概念以及简单的认知WebApi,今天来探究下它的适用场景以及怎么去用它. 先简单聊一下WebApi与用得比较多的WCF.WebService各自的特点: 一.WebServ ...

  • 不用一行代码,用 API 操作数据库,你信吗

    来源:Python 技术「ID: pythonall」 数据库的重要性不言而喻,但是数据库操作起来却不容易,需要用到各种管理工具,各种不同的连接方式,如果有方便的,屏蔽不同数据库细节的工具该多好,功夫 ...

  • 微服务下产品集成和集成测试框架流程

    作者:人月神话,新浪博客同名 简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践 今天谈下微服务架构下的应用集成和集成测试方面的内容.在微服务架构下,由于传统的的单体应用以 ...

  • 微服务架构下的API接口驱动开发,设计和集成

    今天谈下在微服务架构下,接口设计和开发方面的思考. 对于微服务架构,SOA和Http Rest API接口设计,在我前面的头条文章中均有专门的说明,因此对于基础方面的解释在本文不再重复.对于今天要写的 ...

  • 别说不会微服务了,五分钟教你巧妙玩转分布式下链路追踪!

    本篇文章我将给大家介绍"分布式链路追踪"的内容,对于目前大部分采用微服务架构的公司来说,分布式链路追踪都是必备的,无论它是传统微服务体系亦或是新一代Service Mesh的微服务 ...

  • .Net 微服务架构技术栈的那些事

    一.前言 大家一直都在谈论微服务架构,园子里面也有很多关于微服务的文章,前几天也有一些园子的朋友问我微服务架构的一些技术,我这里就整理了微服务架构的技术栈路线图,这里就分享出来和大家一起探讨学习,同时 ...

  • 微服务架构下的系统集成

    微服务架构相比单体架构而言的优点,可以列举出很多:服务个体更小,更内聚,业务职责更清晰,可复用性更强,可以独立部署发布等等:从软件开发的角度,系统的灵活性和开发效率都会有很大的提升.然而,微服务架构本 ...

  • 如何把单体式应用拆解成微服务?【下】

    热评博文:<如何设计出优美的Web API?>,现阅读量超 2300,小伙伴们不要错过哦! 紧接昨天的上篇<如何把单体式应用拆解成微服务?[上]>,今天我们一起来看看具体的拆解 ...

  • 图解微服务技术架构体系

    Hello,Microservices 什么是微服务 微服务的利与弊 什么组织适合使用微服务? 微服务技术架构体系 服务发现 网关 配置中心 通讯方式 监控预警 熔断.隔离.限流.降级 容器与服务编排 ...

  • (精华)2020年10月5日 高并发高可用 分层架构(微服务技术中台)

    首先先上张技术中台架构图 概念 中台概念出现之前,在信息化模式上,前端为支撑业务的应用端,后端为各个应用系统,为前端用户,如:客户.供应商.伙伴.社会,提供服务,但随着市场.用户需求.业务的多变性,底 ...

  • 如何在微服务架构下进行数据设计?

    作者:唐建法 && Mongoing中文社区 来自:http://www.mongoing.com/ 微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微 ...