如何动态修改uri_小白接口测试系列如何开发好的Mock服务?

本文介绍了如何使用Moco快速创建Mock服务。Moco是一个简单、轻量的工具,支持通过配置文件模拟不同类型的HTTP响应。内容涵盖了Moco的安装、配置文件编写,包括配置二级路径、模拟JSON返回、处理请求参数等。同时,文章指出Moco的局限性,如无法动态根据参数返回响应及筛选请求,并预告将在后续内容中改进这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有什么工具可以快速建立起一个Mock服务呢?

Moco

GitHub项目主页:https://github.com/dreamhead/moco

Moco之所以很受欢迎是因为这个项目主要特点是:简单、轻量、功能完全够你用。

安装与配置

下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/moco-runner-1.1.0-standalone.jar

整个Moco服务就是一个jar包,如果想要启动它只需要你本地安装了Java,然后执行一个命令。

java -jar moco-runner--standalone.jar http -p 12306 -c foo.json
  • -p 启动的服务端口号
  • -c 配置文件路径

这个json格式的配置文件,才是Moco的核心。你想要模拟什么内容的返回,都靠它来决定。

编写配置文件

我们首先按照官方给出的示例,新建一个foo.json,模拟一个最简单的接口返回。

[  {    "response" :      {        "text" : "Hello, Moco"      }  }]

(foo.json)

此时启动Moco服务

java -jar moco-runner--standalone.jar http -p 12306 -c foo.json

访问 http://localhost:12306,你会看到一个Html响应,内容为:Hello, Moco

97969f36c8500de7b8f1c59b0f27bd43.png
moco1.jpg
配置文件语法规范

学会了它的简单使用,根据我的风格,下面就要介绍这个Json配置文件里,到底都能写什么?如何模拟复杂一点的需求?

总体格式

我们稍微观察一下就会发现,配置文件格式很简单。总体是一个大的列表,每一个接口就是一个大的{ }。

配置二级路径

现在的Moco服务只有一个地址,就是本地12306。我想继续配置二级、三级路径,比如增加一个/user/login代表登录接口。只需要在当前接口的区域增加一个request,填写url皆可。格式如下:

[  {    "request" : {"uri": "/user/login"},    "response" : {"text" : "Hello, Moco"}  }]

访问 http://127.0.0.1:12306/user/login

56340b81b576dff8473b010e0da4e722.png
moco2.jpg
模拟一个Json格式的返回
[  {    "request" : {    "uri": "/user/login",     "method" : "get",    },        "response" : {    	"status": 200,    	"headers": {"content-type": "text/x-json;charset=UTF-8"},    	"json": {"code": 0, "message": "login"}	}  }]

访问 http://127.0.0.1:12306/user/login

384f604c30d7d8a177c5f399e101d34e.png
moco3.jpg
携带请求参数--query
[  {    "request" : {    	"uri": "/user/login",    	 "queries": {            "name": "admin",            "pwd": "123456"        } 	},    "response" : {    	"status": 200,    	"headers": {"content-type": "text/x-json;charset=UTF-8"},    	"json": {"code": 0, "message": "login"}	}  }]

访问:http://127.0.0.1:12306/user/login?name=admin&pwd=123456

3a897ec20f445dd28a007234a49856d3.png
moco4.jpg
匹配请求参数--query
[  {    "request" : {    	"uri": "/user/login",	    "queries": {	       "page": { "match": "[0-9]{1,}" }	    } 	},    "response" : {    	"status": 200,    	"headers": {"content-type": "text/x-json;charset=UTF-8"},    	"json": {"code": 0, "message": "login"}	}  }]

访问:http://127.0.0.1:12306/user/login?page=7

84f19b3486f1daec03e18db06c0aa3e3.png
moco5.jpg
Post 请求参数--form表单
[  {    "request" : {    	"uri": "/user/login",    	"method" : "post",	    "forms": {          "name" : "admin",          "pwd"  : 123456        } 	},    "response" : {    	"status": 200,    	"headers": {"content-type": "text/x-json;charset=UTF-8"},    	"json": {"code": 0, "message": "login"}	}  }]

使用Postman访问:http://127.0.0.1:12306/user/login

04ac78470990415e16ae6c5755fb605f.png
moco6.jpg

我们演示了Moco Json Api的基本语法使用,包括模拟各种请求参数格式和响应格式,更多详细内容大家参考它的官方文档,里面有很清晰地描述。

https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md

Moco功能强大,常规的Http场景比如:Cookie、重定向全部支持。但是习惯平时深度思考的同学,肯定会觉得哪里不对。

我们现在的Mock服务还有很多缺点,比如无法根据参数的不同,动态返回响应内容;无法筛选请求(如果要Mock的话,所有的请求都要在Moco启动的服务器中处理,想保留部分接口不使用Mock功能就做不到)。我们在下个小节中会进一步改造我们利用Moco搭建起来的Mock功能。

点一下阅读原文,获取接口面试题集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值