0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用WireMock搭建一个HTTP模拟器

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-09 10:38 次阅读

我们开发过程中,前端和后端的开发大多是同时进行的,而前端开发需要访问某个接口返回数据的时,我们可以使用WireMockvwin 指定API返回指定测试数据,这可以极大的方便我们的开发工作。今天就介绍如何使用WireMock搭建一个HTTP模拟器,并介绍一些基本案例。

1. 前言

WireMock 是一个Http 模拟服务,其核心也是一个web服务,WireMock主要是为特定请求提供固定的返回值。

WireMock可以作为单独进程启动,模拟一个WEB服务器,提供一些API访问,并返回特定的返回值。也可以作为第三方库在项目中使用。

下面我们先介绍以下WireMock模拟WEB服务器的使用吧。

2. WireMock搭建

  1. 第一步,先下载WireMock的Jar包, 本教程使用下载地址如下 :https://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-jre8-standalone/2.33.2/wiremock-jre8-standalone-2.33.2.jar

  2. 到指定目录启动Jar,同时也可以加一些启动参数。下面的命令表示用9998端口启动这个模拟服务器。

    java-jar wiremock-jre8-standalone-2.33.2.jar -port9998

    启动界面如下:

    图片

3. WireMock使用

WireMock启动时候,文件夹里面会有 _files 和 mappings 两个文件夹, _files文件夹中可以放一些返回数据文件。mappings文件夹中存放映射关系,使用json格式的文件。

图片

如下图,新建json文件,启动WireMock时回加载这些文件,更新之后只需要重启WireMock即可。

图片

3.1 简单API映射

json文件如下,

{"mappings": [ {"request": {"method":"GET","url":"/api/hello"},"response": {"body":"Hello world!","headers": {"Content-Type":"text/plain"},"status":200} } ] }

启动后正常访问:

图片

如果配置的地址访问不到也会返回错误,如下:

图片

3.2 返回response中添加header

{"request": {"method":"GET","url":"/whatever"},"response": {"status":200,"headers": {"Content-Type":"text/plain","Set-Cookie": ["session_id=91837492837","split_test_group=B"],"Cache-Control":"no-cache"} } }

3.3 返回数组

"response": {"status":200,"jsonBody": {"arbitrary_json": [1,2,3] } }

3.4 返回指定文件数据 写在_file文件夹里面

{"request": {"method":"GET","url":"/bodyfile"},"response": {"status":200,"bodyFileName":"/myfile.xml"} }

_file文件夹下面新建的文件:

图片

访问接口则可以直接返回文件中的数据:

图片

3.5 URL 映射

WireMock也支持映射正则表达式:

{"request": {"urlPattern":"/your/([a-z]*)?and=query"... }, ... }

3.6 指定请求头

{"request": { ..."headers": {"Content-Type": {"equalTo":"application/json","caseInsensitive":true} } ... }, ... }

3.7 可变状态请求

requiredScenarioState/newScenarioState 可以记录当前API映射所处的状态以及新的状态,可以通过改变其状态,从而可以使同一个API返回不同的结果, 如下面的请求则可以改变状态,返回不同的结果.

{"mappings": [ {"scenarioName":"To do list","requiredScenarioState":"Started","request": {"method":"GET","url":"/todo/items"},"response": {"status":200,"body":"< items >< item >Buy milk< /item >< /items >"} }, {"scenarioName":"To do list","requiredScenarioState":"Started","newScenarioState":"Cancel newspaper item added","request": {"method":"POST","url":"/todo/items","bodyPatterns": [ {"contains":"Cancel newspapersubscription"} ] },"response": {"status":201} }, {"scenarioName":"To do list","requiredScenarioState":"Cancel newspaper item added","request": {"method":"GET","url":"/todo/items"},"response": {"status":200,"body":"< items >< item >Buy milk< /item >< item >Cancel newspaper subscription< /item >< /items >"} } ] }
  • 第一次访问时,Started状态:
    图片
  • 访问第二个接口,改变其状态如下
  • 再次访问API,返回新的数据
    图片

3.8 API 故障模拟

设置延时返回,如下可以设置定时延迟2秒。

{"request": {"method":"GET","url":"/delayed"},"response": {"status":200,"fixedDelayMilliseconds":2000} }

如下是延迟2秒的返回结果。

图片

同时也可以设置随机的延迟时间:

{"request": {"method":"GET","url":"/random/delayed"},"response": {"status":200,"delayDistribution": {"type":"lognormal","median":50,"sigma":0.4} } }

总结

WireMock可以快速搭建Web服务,可以模拟开发测试需要的各种请求,使用十分方便。对于维护测试环境稳定以及提高开发效率方面都有不错的效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1452

    浏览量

    61419
  • HTTP
    +关注

    关注

    0

    文章

    476

    浏览量

    30658
  • Web服务器
    +关注

    关注

    0

    文章

    137

    浏览量

    24307
  • 模拟器
    +关注

    关注

    2

    文章

    849

    浏览量

    42937
收藏 人收藏

    评论

    相关推荐

    LCD模拟器

    本帖最后由 sky512 于 2012-7-13 11:37 编辑 本 模拟器可以 模拟点阵LCD的基本显示效果,通过调用相应函数可以灵活地改变点阵数、颜色等属性。可以方便项目开发的前期 模拟测试。下载地址:
    发表于07-08 20:41

    电脑pc端上安卓模拟器下载与使用教程

    安卓作为全球用户最多的智能手机系统,有很多好玩儿的应用。如果你还没有安卓手机,又想买 部试试,可是价格都不便宜,买来不适合自己怎么办?那么可以先在电脑上安装 安卓 模拟器,因为它可以在
    发表于09-10 11:56

    模拟器:904和模拟器:861错误

    链接设计。我在论坛中看到我们需要使用任务管理 或进程查看 来终止 模拟器可执行文件(_isim_beh.exe)。但是从哪里可以找到任务管理 或进程查看
    发表于04-03 08:47

    LVGL模拟器该怎样去搭建

    LVGL 模拟器 搭建我用的是vs 搭建模拟器,实际上很简单,去下载最新的vs然后我是选择了接下来,下载安装。再下载官方的 模拟器。就可以进行仿真
    发表于01-18 09:31

    种多普勒模拟器的设计与实现The Design and I

    本文介绍了 种成功应用于某自主外测系统的多普勒 模拟器的设计与实现。该 模拟器易于使用,控制灵活。在系统联调期间,该 模拟器可进行极小步进、快速扫频,取得了满意
    发表于05-25 15:14 33次下载

    模拟器电路

    模拟器电路
    发表于03-29 16:43 693次阅读
    铃<b class='flag-5'>模拟器</b>电路

    模拟器电路

    模拟器电路
    发表于03-30 20:09 894次阅读
    铃<b class='flag-5'>模拟器</b>电路

    经济的负责模拟器电路图

    经济的负责 模拟器电路图
    发表于07-01 13:23 632次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>经济的负责<b class='flag-5'>模拟器</b>电路图

    种新型的基于LabView设计的脉压模拟器

    种新型的基于LabView设计的脉压 模拟器摘 要: 提出了 种新型的基于LabView设计的脉压 模拟器,介绍了其设计思想、系统的软硬件构成及应
    发表于12-01 10:25 914次阅读
    <b class='flag-5'>一</b>种新型的基于LabView设计的脉压<b class='flag-5'>模拟器</b>

    仿真模拟器的不同_仿真模拟器的区别简单分析

    仿真 模拟器经常被混淆,两者有些许相似,但是是两 不同的概念,本文为大家带来仿真 模拟器的区别简单分析。
    发表于01-05 14:27 8426次阅读

    种新的微结构模拟器设计

    处理 体系结构 模拟器可以对处理 的结构采用软件方式进行 模拟,辅助处理 的研究工作。通过对多种结构和微结构参数进行配置,可以对处理
    发表于03-12 16:13 0次下载
    <b class='flag-5'>一</b>种新的微结构<b class='flag-5'>模拟器</b>设计

    如何使用vi模拟器

    Atmel 小贴士 vi 模拟器的使用
    的头像 发表于07-11 00:17 4151次阅读

    ADSIM模拟器

    ADSIM 模拟器
    发表于03-23 13:50 15次下载
    ADSIM<b class='flag-5'>模拟器</b>

    真正的Arduino UNO电子宠物模拟器

    德赢Vwin官网 网站提供《 真正的Arduino UNO电子宠物 模拟器.zip》资料免费下载
    发表于10-21 10:16 1次下载
    <b class='flag-5'>一</b><b class='flag-5'>个</b>真正的Arduino UNO电子宠物<b class='flag-5'>模拟器</b>

    电路仿真模拟器怎么用

    电路仿真 模拟器是电子工程师和学生必备的 类软件工具。通过使用电路仿真 模拟器,用户可以在计算机上 模拟和分析各种电路设计,从而避免在实际 搭建电路
    的头像 发表于05-04 10:53 1383次阅读