Moco框架初探

一、简介

Moco是一个搭建模拟服务器的工具,其支持API和独立运行两种方式,前者通常在junit等测试框架中使用,后者则是通过运行一个jar包开启服务。

二、用途

主要用于实现mock技术

1、后端接口开发未完成情况下,通过moco模拟接口,支持接口测试,可以使接口测试更加提前。

2、后端接口开发未完成情况下,通过moco模拟接口,支持前端完成相关页面开发,包括移动端和web端前端页面实现。

三、moco用于接口测试

一般而言,在项目的接口文档输出之后,接口开发及接口测试用例设计是同时进行的,但往往接口测试用例设计会先于接口开发完成,这时,如需调试或执行接口测试用例,需要等待接口开发完成。而通过moco框架,可以在接口文档输出之后,使用moco搭建一个模拟服务器,即使接口开发未完成,也可调试或执行测试用例。接口开发完成之后再去调用实际接口执行测试用例即可。

四、moco的启动

1、到GitHub上下载moco-runner-0.12.0-standalone.jar包

下载地址:github.com/dreamhead/m…

2、使用命令行启动http服务

java -jar moco-runner-0.12.0-standalone.jar 协议类型 -p 端口号

协议类型通常当然是http

参数:-c json配置文件 启动单个json配置文件

参数:-g json配置文件 启动全局json配置文件

如上图所示,表示启动成功了

五、Demo

moco支持http协议的多种请求方法,包括get、post、put、delete等。配置文件常用json格式文件,包括请求和响应,一下是一些常用请求demo。

1、常用请求demo

1)get请求

[ { "description":"不带参数的get请求", "request":{ "uri":"/withGetDemo", "method":"get" }, "response":{ "text":"这是不带参数的get请求" } }, { "description":"带参数的get请求,p1,p2分别的参数1,参数2,名称可随便起,个数也可随便加", "request":{ "uri":"/wihtGetDemobyParam", "method":"get", "queries":{ "p1":"hh", "p2":"good" } }, "response":{ "text":"this is a get method with paramter" } } ]

2)post请求

[ { "description":"post 请求", "request":{ "uri":"/postDemo", "method":"post" }, "response":{ "text":"This is post request" } }, { "description":"带参数的post请求", "request":{ "uri":"/postDemoWithParam", "method":"post", "forms":{ "param1":"one", "param2":"two" } }, "response":{ "text":"this is post request with param" } } ]

3)post请求(请求参数为json格式且带cookies)

[ { "description":"这是一个带cookies的Post请求", "request":{ "uri":"/postDemoWithCookies", "cookies":{ "login":"true" }, "json":{ "name":"hi", "age":"3" } }, "response":{ "status":"200", "json":{ "name":"success", "status":"1" } } } ]

4)请求带header

[ { "description":"带header请求", "request": { "uri": "/withHeader", "method": "post", "headers": { "content-type": "application/json" }, "json": { "name": "xiaoming", "age": "18" } }, "response":{ "json":{ "message":"success", "status":"1" } } } ]

5)请求带重定向

[ { "description":"重定向到百度", "request":{ "uri":"/redirect", "method":"get" }, "redirectTo":"www.baidu.com" }, { "description":"这是被重定向的请求", "request":{ "uri":"/toRedirect" }, "response":{ "text":"this is the redirect page" } }, { "description":"重定向到自己的网页上", "request":{ "uri":"/myStation" }, "redirectTo":"/toRedirect" } ]

六、全局启动配置文件

file_root:接口访问路径

include:导入需要启动的json文件,根据需要,写多少个都可以。

[

{ "file_root":"api/book", #路径

"include": "book.json" #接口数据json文件

},

{

"file_root":"api/person",

"include":"person.json"

}

]

七、Moco的不足

Moco的使用很简单,配置也很方便,目前更是提供了http、rest、socket服务。但是,也仅仅能stub出接口,模拟出简单的场景。如果接受请求后需要做一些处理,如查询数据库,进行运算,或者一些复杂的操作,就无能为力了。所有是否选用Moco,就取决于开发者是否只是需要一个简单的模拟服务器。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

When Urban Region Profiling Meets Large Language Models

本文是LLM系列文章,针对《When Urban Region Profiling Meets Large Language Models》的翻译。 当城市区域轮廓遇到大型语言模型时 摘要1 引言2 前言3 方法4 实验5 结论与未来工作 摘要 基于网络数据的城市区域概况对城市规划和可持续发展至关重要。我们见证了LL…

猫头虎分享从Python到JavaScript传参数:多面手的数据传递术

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Mysql高级查询整理

INFORMATION_SCHEMA INFORMATION_SCHEMA 是 MySQL 数据库系统中的一个特殊数据库,它包含了关于数据库对象的元数据信息。通过查询 INFORMATION_SCHEMA,可以获取有关数据库、表、列、索引、外键、用户权限等方面的信息。 以下是 INFORMATION_SCHEMA 中包…

网络数据包传感器简化流量监控

数据包捕获基于数据包镜像的概念,可用于深度数据包检查、测量应用程序的响应时间以及监视服务器、网络和用户行为,该技术还可用于对需要特定信息的某些区域进行广泛分析,尽管它有效,但并非在所有情况下都是必要的。要分析和管理流…

企业数字化转型与供应链效率-基准回归复刻(2007-2022年)

参照张树山(2023)的做法,本团队对来自统计与决策《企业数字化转型与供应链效率》一文中的基准回归部分进行复刻。文章实证检验企业数字化转型对供应链效率的影响。用年报词频衡量上市公司数字化转型程度,以库存周转天数来衡量供应…

mysql 全文检索 demo

mysql5.6.7之后开始支持中文全文检索一直没用过,这次试试。 创建表 CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR (200),body TEXT,FULLTEXT (title, body) WITH PARSER ngram ) ENGINE INNODB DEFAULT CHARSETut…

Docker学习——④

文章目录 1、Docker Image(镜像)2、镜像命令详解2.1 docker rmi2.2 docker save2.3 docker load2.4 docker image inspect2.5 docker history2.6 docker image prune 3、镜像综合实战3.1 离线镜像迁移3.2 镜像存储的压缩与共享 1、Docker Image&#xff…

el-select配合el-tree实现下拉选以及数据回显以及搜索

一、前言 有时候就会遇到组件配合使用的情况&#xff0c;然后就整理了一下&#xff0c;后面大家需要的话可以直接拿去使用。 二、源码 <template><el-selectref"selectTree"filterablev-model"name":placeholder"请选择":filter-meth…

你知道在游戏开发中怎么将算法与其作用的对象隔离开来吗?

点击上方亿元程序员关注和★星标 引言 你可能知道的设计模式-访问者模式 大家好&#xff0c;今天我们要来聊一聊在游戏开发中非常实用的设计模式——访问者模式。访问者模式是一种将算法与对象结构分离的软件设计模式&#xff0c;它可以让代码更加灵活、可扩展&#xff0c;同…

那些年遇到过的问题与解决方案

目录 一、当我们想进行数据回显并且只是让用户查看信息不能编辑时&#xff0c;置灰处理 二、多选框初始化加载问题 三、时间处理 获取当前年月日 时间自定义格式化 时间脱敏处理&#xff0c;去掉秒 四、input输入框处理 input输入框设定为只能输入0与正整数 刚进页面…

UE4 Niagara Module Script 初次使用笔记

这里可以创建一个Niagara模块脚本 创建出来长这样 点击号&#xff0c;输出staticmesh&#xff0c;点击它 这样就可以拿到对应的一些模型信息 这里的RandomnTriCoord是模型的坐标信息 根据坐标信息拿到位置信息 最后的Position也是通过Map Set的号&#xff0c;选择Particles的P…

达梦数据库表空间管理常用SQL

达梦数据库表空间管理常用SQL 表空间容量分析表空间创建与扩容 查看数据库状态&#xff1a; select name,instance_name,status$,mode$ from v$instance; --mode$显示Primary为主库select name,status$,role$ from v$database; --status$&#xff1a;1 启动&#xff0c;2 启动…

数据库实验:SQL的数据视图

目录 视图概述视图的概念视图的作用 实验目的实验内容实验要求实验过程 视图概述 视图是由数据库中的一个表或多个表导出的虚拟表&#xff0c;其作用是方便用户对数据的操作 视图的概念 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一…

安科瑞出席2023湖南智能建筑电气高峰论坛-安科瑞 蒋静

10月27日&#xff0c;安科瑞电气股份有限公司受邀出席在湖南长沙召开的2023湖南智慧建筑电气高峰论坛。会议主题是“安全、健康、智慧、创新”&#xff0c;现场汇集湖南省设计院、施工单位、高等院校和企业代表等300余人参会。 湖南省建筑设计院集团股份有限公司机电院总工、正…

原文远知行COO张力加盟逐际动力 自动驾驶进入视觉时代?

11月7日&#xff0c;通用足式机器人公司逐际动力LimX Dynamics官宣了两位核心成员的加入。原文远知行COO张力出任逐际动力联合创始人兼COO&#xff0c;香港大学长聘副教授潘佳博士为逐际动力首席科学家。 根据介绍&#xff0c;两位核心成员的加入&#xff0c;证明一家以技术驱…

Flink SQL Regular Join 、Interval Join、Temporal Join、Lookup Join 详解

Flink ⽀持⾮常多的数据 Join ⽅式&#xff0c;主要包括以下三种&#xff1a; 动态表&#xff08;流&#xff09;与动态表&#xff08;流&#xff09;的 Join动态表&#xff08;流&#xff09;与外部维表&#xff08;⽐如 Redis&#xff09;的 Join动态表字段的列转⾏&#xf…

低代码开发,节约成本更好的选择

目录 低代码开发过程中是如何工作的&#xff1f; 低代码开发具备哪些功能&#xff1f; 具备的功能有&#xff1a; 01、高性能、高拓展 02、功能丰富&#xff0c;满足通用场景 03、私有化部署 04、代码生成器&#xff0c;下载代码进行二次开发 05、适配国产化&#xff0c;支持主…

黄金走势分析:美元反弹,金价已失守1980关口

昨晚美元和美债收益率反弹回升&#xff0c;现货黄金震荡下行&#xff0c;美市尾盘金价失守1980美元关口&#xff0c;最低至1977.22美元/盎司&#xff0c;最终收跌0.72%&#xff0c;报收1977.69美元/盎司。在汉声集团分析师张新才发稿前&#xff0c;今日&#xff08;周二&#x…

JavaSE 再续篇-面试题:this 与 super 关键字的区别

&#x1f525;博客主页&#xff1a; 小扳_-CSDN博客 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 this 与 super 关键字的区别 1.1 在Java中&#xff0c;this 关键字有以下作用 1.2 在Java中&#xff0c;super 关键字有以下作用 2.0 经典习题 1.0 this 与 su…

后台项目Gradle打包jar,不包含依赖jar并放到外部路径

# 1.Gradle打包jar # 2.依赖jar包外放到其他目录 # 3.保留引用关系 # 4.去掉引入的缓存build.gradle// 需要放到dependencies下面 // 傻逼问题 1 这个jar打包还得主动开 jar.enabled true // 1.清除上一次的lib目录 task clearJar(type: Delete) {delete "$buildDir\\lib…