HTTP接口的Mock工具——WireMock简易手册

Posted by Steve on July 27, 2020

第一版是真的简易手册,简易到只是简单使用一下下

上周TTJ找到我,说我之前搞的那个python写的http接口mock工具用不了了。原因是不知怎么回事,nginx的配置文件被清空了。
鄙人便想“那就正好直接部署下WireMock试试吧”。

1.简介

官网上的一句话简介WireMock is a simulator for HTTP-based APIs. Some might consider it a service virtualization tool or a mock server.(WireMock是基于HTTP的API的模拟器。 有些人可能会认为它是服务虚拟化工具或者是mock服务器。)说人话就是WireMock可以mock一些http协议的接口,用于开发或者测试。

2.工作方式介绍

WireMock支持两种工作方式:

  1. 与JUnit相结合或者直接在单元测试中使用。
  2. 作为独立进程运行使用。

本篇着重介绍的是第2种方式。

3.独立进程方式的下载及使用

在官网中有下载链接,jar包的位置在页面的最下方。
启动命令(详细的参数介绍参考官方手册):

  • Windows:java -jar wiremock-jre8-standalone-2.27.0.jar
  • Linux:nohup java -jar /root/wiremock-jre8-standalone-2.27.0.jar –port 8888 &

启动图

我这一般windows上启动的话,就是做本地调试用,所以命令行比较简单。参考上图,可以看出启动默认占用了8080端口。并且在当前目录下新建了__filesmappings这两个文件夹。(WireMock这个工程是用gradle做构建管理,web容器用的是jetty。这两个工具都没用过,真的是学到老活到老)

服务已经启动了,接下来是如何进行mock数据的填充了,WireMock提供了两种填充数据的方式。

  • mappings文件夹中提前维护相关数据。
  • 发送http请求实时进行数据配置。

WireMock是可以根据请求的内容做一些逻辑的,既请求内容不同,返回值也不同。具体设置方式还是参考官网手册。我这里附一个Postman的导出文件的压缩包,可以本地启动服务试一下。

后记

内容不多,希望能有用。说实在的,因为也不是自己用,所以确实没有研究很深。顺便说下自己的技术观,常规工具类的东西,现用现学就行。类似nginx之类的高频使用的工具,可以尝试深挖一下。不过最好把时间用在底层原理,技术核心的学习上。新技术总是层出不穷,不可能都学完。但是新技术很多时候是为了解决某类问题而产生的,其底层技术都有一样的,所以底层技术要搞扎实。但是不是说不去“拥抱”新技术。要辩证的看,没有一种技术可以解决所有问题的。这也就需要了解新技术产生的历史,为什么来?怎么来?到哪去?

实战记录

下面的所有内容都保存在JMeter(Ver5.4.1)的jmx文件中了,下载解压后可以直接打开使用(点我下载jmx文件压缩包)。

请求url的正则匹配

遇到一个接口发现请求url中带有加入了时间戳的token信息,于是需要被mock的接口可以支持正则匹配。设置与自测分别参考[man][group01]setMessageRegex[man][group01]getMessageRegex

过程中用到的一些网站:

更新日志

  • 2020年7月27日:初稿。
  • 2021年5月6日:追加实战记录“请求url的正则匹配”

友链