news 2026/5/8 18:48:27

Moco测试知多少?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Moco测试知多少?

什么是mock?

Mock就是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来替代它,帮助我们测试这种场景。

一般前端工程师会在后端工程师还没有完成后台接口开发的时候,自己根据事先约定好的api文档自己mock一个接口,用来调试他的前端页面。

这里的mock我们就可以理解为创建了一个虚拟的接口。

我们测试人员在测试的时候,有时候遇到需要第三方接口返回特定数据以符合特定的测试场景,这种情况需要和第三方厂商进行沟通,联调测试,效率低成本高,此时我们就可以利用mock的方式,自己创建一个虚拟的第三方接口返回,来代替。

不光是第三方接口,有时候测试一些异常场景的前端展示,也可以用mock的方式快速模拟出这种场景.

在自动化测试的场景,我们也会遇到因为依赖的第三方接口不稳定,而导致自动化测试用例执行失败,影响了我们自动化测试用例的执行效率,我们同样可以把这些依赖的接口用mock来代替,增强自动化测试的稳定性。

下载moco

Moco是一个简单易用的mock工具,可以通过简单的配置request和response 对象,达到模拟请求效果。

我们可以直接去github上获取moco的jar包

https://github.com/dreamhead/moco

这里展示了关于moco的介绍和源码,我们可以点击箭头处直接下载它的jar包

配置json文件

我们需要先编辑一个json文件,用来定义不同的请求得到的不同返回值.

新建一个文件,格式改为json.然后打开这个文件进行编辑.如图:

其中description代表的是注释,里面内容可以填一些这个请求相关的注释内容,帮助增加这个json文件的可读性,uri就是我们这个接口的统一资源标识符,可以根据你想摸你的接口自定义,下面的response里的内容代表了返回的值

此时我们编辑好了一个简单的mock文件,我们来看看效果。

启动moco

首先把我们下载下来的moco的jar包和刚刚编辑好的json文件放到同一个文件夹路径下,如图:

然后在该路径下打开cmd命令行

在该路径下,输入cmd,按回车,弹出命令行.

输入命令:java -jar moco-runner-1.1.0-standalone.jar http -p 8888 -c test.json

其中jar包的名称你们根据自己下载的jar包版本来写,后面的http代表这个模拟的是http请求,-p 8888 定义是端口号,-c test.json 写的是我们编辑的那个json文件名,根据你们自己编辑的文件名称来写。

执行命名后,如图:

此时我们mock的服务以及启动成功了,相当于在我们本地的8888端口上启动的,所以我们可以通过浏览器访问一下localhost:8888/demo 来看看返回的结果,注意,这里/demo就是我们在json文件中定义的uri。

如图,我们访问后得到了json文件中编辑的返回值。

以上我们就完成了用moco来帮助我们生成mock。

同一个请求不同的入参mock不同的返回值

刚刚我们的请求是一个get请求,且不带任何参数,如果我们想mock

多种情况的话,就可以在json文件中编辑多种情况的请求,格式如图:

图中我们给了这个请求2中入参的情况,分别返回2种值,我们可以使用postman来试下,或者直接在浏览器打开,如图:

当请求入参分别为123和444的时候,返回的值不同。

如果你修改一个你没有配置的入参,此时请求就会报错,如图:

配置不同的请求类型

刚刚我们试的都是get请求,我们可以通过在文件中配置请求类型来生成一个post类型的请求,如图:

如图我们是在request中加入了method参数,把它的值设置为post,然后增加了form的入参,在其中添加我们这个请求的入参,我在这里设置了2种入参的请求,分别对应的返回值也不同,分别为当param1=test1和test2的情况,我们来试试看。

由于post类型的请求我们不能直接用浏览器来发起,这里我们可以借用接口测试工具,发送请求,我这里用了postman,发送请求如图:

如图所示分别为test1和test’2的返回情况,说明我们的post请求mock也完成了。

总结

Moco还可以通过在json文件中添加cookies,header,重定向这些参数,来模拟各种情况下的请求和返回值,大家可以根据自己工作的需求去对这些东西进行了解。

Moco是热更新的,所以当你启动了jar包的服务之后,即使此时修改了json文件中的内容,你也不需要重启服务,就可以生效了。

掌握了mock测试的技术,可以让我们在开发没有完成对应接口的时候,有接口文档就提前进入到测试状态,是现在敏捷模式下不可或缺的技术,也是持续集成中一个重要的组成部分。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 6:45:32

由山川湖海自然形成的理想版图,格局够大吗

这张地图勾勒的轮廓,是以山川湖海为界的理想版图,覆盖了传统华夏文明的核心区域与地缘屏障带。 它既阻挡外部势力的冲击,也为内部农耕、游牧、渔猎等多元生产方式提供了共存空间,让文明在相对稳定的环境中完成整合与延续。 它西…

作者头像 李华
网站建设 2026/5/3 1:23:28

Sambert-Hifigan日志分析:通过error追踪合成失败根本原因

Sambert-Hifigan日志分析:通过error追踪合成失败根本原因 🎯 问题背景与技术定位 在基于 ModelScope Sambert-HifiGan(中文多情感) 模型构建的语音合成服务中,尽管系统已集成 Flask WebUI 并修复了 datasets、numpy、s…

作者头像 李华
网站建设 2026/5/7 20:08:07

零代码玩转Llama Factory:10分钟微调你的第一个LlaMA 3模型

零代码玩转Llama Factory:10分钟微调你的第一个LlaMA 3模型 作为一名刚接触AI的大学生,当导师要求我微调一个对话模型来完成课程项目时,面对复杂的代码和CUDA环境配置,我感到无从下手。幸运的是,我发现了Llama Factory…

作者头像 李华
网站建设 2026/5/1 11:47:08

Llama Factory微调实战:从数据准备到模型部署

Llama Factory微调实战:从数据准备到模型部署 大语言模型微调是将预训练模型适配到特定任务的关键步骤,而Llama Factory作为一个高效的微调框架,能显著降低技术门槛。本文将手把手带你完成从数据准备到模型部署的全流程,特别适合想…

作者头像 李华
网站建设 2026/4/29 18:53:51

Sambert-HifiGan与语音识别结合:打造完整语音交互系统

Sambert-HifiGan与语音识别结合:打造完整语音交互系统 引言:构建端到端中文语音交互闭环的必要性 随着智能客服、虚拟助手、有声阅读等应用场景的普及,用户对自然、富有情感的中文语音交互体验提出了更高要求。传统的语音合成(T…

作者头像 李华
网站建设 2026/4/26 2:30:36

如何用Sambert-HifiGan为智能洗衣机生成操作提示

如何用Sambert-HifiGan为智能洗衣机生成操作提示 引言:让家电“会说话”——语音合成在智能洗衣机中的应用价值 随着智能家居的普及,用户对交互体验的要求不断提升。传统的蜂鸣提示或LED闪烁已无法满足现代家庭对人性化、情感化、自然化交互的需求。尤其…

作者头像 李华