当前位置: 首页 > 科技观察

WireMock让你轻松模拟API_0

时间:2023-03-12 19:59:38 科技观察

大家好,我是北军。在我们的开发过程中,前后端开发大多是同时进行的,当前端开发需要访问某个接口返回数据时,我们可以使用WireMock模拟指定的API来实现返回指定的测试数据,可以极大的方便我们的开发。工作。今天我将介绍如何使用WireMock搭建一个HTTP模拟器,并介绍一些基本的案例。一、前言WireMock是一个Http模拟服务,其核心也是一个web服务。WireMock主要针对特定??的请求提供固定的返回值。WireMock可以作为一个单独的进程启动,模拟一个WEB服务器,提供一些API访问,并返回一个特定的返回值。也可以作为第三方库在项目中使用。下面先介绍一下使用WireMock模拟WEB服务器。2、构建WireMock的第一步是下载WireMock的Jar包。本教程使用的下载地址如下:https://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-jre8-standalone/2.33.2/wiremock-jre8-standalone-2.33.2.jar进入指定目录启动Jar,也可以添加一些启动参数。以下命令表示启动9998端口的模拟服务器。java-jarwiremock-jre8-standalone-2.33.2.jar-port9998启动界面如下:3.WireMock启动使用WireMock时,会出现两个文件夹、_files和映射,在_files文件夹中。返回数据文件。映射关系保存在mappings文件夹中,使用json格式的文件。如下图所示,新建一个json文件,并在启动WireMock时加载这些文件。更新后,只需重启WireMock即可。3.1简单API映射json文件如下:{"mappings":[{"request":{"method":"GET","url":"/api/hello"},"response":{"body":"Helloworld!","headers":{"Content-Type":"text/plain"},"status":200}}]}启动后正常访问:如果配置的地址无法访问,报错会返回,如下:3.2Addheader{"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文件夹下新建文件:访问界面即可直接返回文件Data:3.5URL映射WireMock也支持mapping正则表达式:{“请求”:{“你的lPattern":"/your/([a-z]*)\\?and=query"...},...}3.6指定请求头{"request":{..."headers":{"Content-Type":{"equalTo":"application/json","caseInsensitive":true}}...},...}3.7可变状态请求requiredScenarioState/newScenarioState可以记录当前API映射的状态和新的状态状态,通过改变它的状态,同一个API可以返回不同的结果。例如,下面的请求可以改变状态并返回不同的结果。:"Started","request":{"method":"GET","url":"/todo/items"},"response":{"status":200,"body":"买牛奶"}},{"scenarioName":"Todolist","requiredScenarioState":"Started","newScenarioState":"取消报纸项目添加","request":{"method":"POST","url":"/todo/items","bodyPatterns":[{"contains":"取消报纸订阅"}]},"response":{"status":201}},{"场景我”:“Todolist","requiredScenarioState":"取消添加报纸项目","request":{"method":"GET","url":"/todo/items"},"response":{"status":200,"body":"买牛奶取消订阅报纸"}}]}第一次访问时,Started状态:正在访问second如下更改其状态,再次访问API,返回新数据3.8API故障模拟设置延迟返回,如下,可以设置定时延迟2秒{"request":{"method":"GET","url":"/delayed"},"response":{"status":200,"fixedDelayMilliseconds":2000}}下面是延迟2秒的返回结果,也可以设置一个随机的延迟时间:{"request“:{“方法”:“GET”,“url”:“/随机/延迟”},“响应”:{“状态”:200,“delayDistribution”:{“类型”:“对数正态”,“中位数”:50,"sigma":0.4}}}总结WireMock可以快速搭建web服务,模拟开发测试所需的各种请求,非常方便使用方便。对维护测试环境的稳定性,提高开发效率有很好的作用。