『居善地』接口测试 — 12、Moco框架介绍
1、Mock功能介绍
各个业务系统都会关联多个三方系统接口调用,在测试过程中第三方业务存在不能及时提供接口调用,这时就需要用到我们的mock服务了。
Mock的本质在于模拟三方业务接口的返回,来满足自身的测试功能,快速完成测试任务。
2、Moco框架介绍
Moco框架是Mock概念中的一种实现。
Moco框架是一个简单搭建模拟服务器的程序库/工具,这个基于 Java 开发的开源项目。
Moco框架已经在 Github 上获得了不少的关注,该项目的简介是这样描述自己的:
- Moco 是一个简单搭建 stub 的框架,主要用于测试和集成。
- 这个框架的开发灵感来自 Mock 框架,如
Mockito和Playframework。
为什么要开发这个框架?
- 用于基于HTTP协议的集成:
web service、REST等,在我们的项目开发中被广泛应用。 - 以前,我们每次都要往
Jetty或Tomcat等应用服务器上部署一个新的 WAR。 - 大家都知道,开发部署一个 WAR 的过程是很枯燥的,即使在嵌入式服务器上也是如此。而且,每次我们做一点改动,整个 WAR 都要重新组装。
- Moco框架的出现,正是为了解决这些问题。开发团队只要根据自己的需要进行相应的配置,就会很方便得到一个模拟服务器。
- 而且,由于 Moco框架本身的灵活性,其用途已经不再局限于最初的集成测试。
比如:
Moco 可以用于移动开发;
模拟尚未开发的服务;
Moco 还可以用于前端开发,模拟一个完整的 Web 服务器等等。
3、Moco框架在接口测试中的作用
一般接口文档编写完成后,测试人员需要提前进行接口测试用例的编写,而这时接口开发工作可能还没完成。
如果要等到开发人员完成接口的开发,再进行测试用例的编写,这样会降低测试开发的效率。
这时如果测试人员使用Moco框架搭建一个模拟服务器,就可以根据接口文档,自己模拟出接口的调用并返回结果。
在用例设计完成后,即使接口开发工作还未完成,也可以立即进行接口测试用例的执行。并且在这个过程中可以修改、补充测试用例。
在接口开发完成以后,只需要简单的切换服务器地址,就可以测试所有的开发人员实现的接口了。这样可以节省很多的测试时间,减少项目开发的周期。
Moco框架支持HTTP协议,采用热部署,修改配置后,立刻生效,无需重启服务。
Moco框架接口测试中的作用:方法隔离,服务解耦。即可并行又可驱动。
4、Moco框架的优点
- 只需要简单的配置
Request、Response等即可满足要求,支持HTTP、HTTPS、SCOKET。可以说是非常的灵活性。 - 支持在
Request中设置Headers,Cookies,StatusCode等。 - 对GET、POST、PUT、DELETE等请求方式均支持,很适合web开发。
- 无需环境配置,有Java环境即可。
- 修改配置后,立刻生效。只需要维护接口,也就是契约即可。
- 对可能用到的数据格式都支持,如
json、text、xml、file等。 - 还能与其他工具集成,如
Junit、Maven、Gradle等。
5、Moco框架的下载与启动
Moco框架文档地址:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
(1)Moco框架的下载
Github下载地址:https://github.com/dreamhead/moco(这里下载的是源码,不是jar包)
Moco框架Jar包下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/
如下图所示:

得到moco-runner-0.11.0-standalone.jar文件。
(2)Moco框架的启动
- 条件:
因为Moco框架是一个jar包,所以需要Java环境才能启动。
即:配置好Java环境。 - 启动:
把Moco框架Jar包和Json文件放入同一个文件夹中,
命令行终端里进入到Json文件所在的目录,执行启用命令,如下:
java -jar ./moco-runner-0.11.0-standalone.jar http -p 12306 -c foo.json即可。
说明:
./moco-runner-0.11.0-standalone.jar为Moco工具所在目录。
http:表示服务器协议,server type: http, https, socket。
-p:表示端口号。
-c:表示一个json文件。接口所有的信息都配置在该json文件中。
提示:Moco工具路径和json文件路径都可以写相对路径和绝对路径。
『居善地』接口测试 — 12、Moco框架介绍的更多相关文章
- 『居善地』接口测试 — 13、Moco框架的使用
目录 1.Moco框架第一个练习 2.Get方法的Mock实现 3.Post方法的Mock实现 4.请求中加入Cookies 5.请求中加入Header 6.Moco模拟重定向 7.综合练习 8.总结 ...
- 『居善地』接口测试 — 3、Requests库介绍
目录 1.Requests库 2.Requests库文档 3.Requests库安装 4.Requests库的使用 (1)使用步骤 (2)示例练习 5.补充:Json数据和Python对象互相转化 1 ...
- 『居善地』接口测试 — 5、使用Requests库发送POST请求
目录 1.请求正文是application/x-www-form-urlencoded 2.请求正文是raw (1)json格式文本(application/json) (2)xml格式文本(text ...
- 『居善地』接口测试 — 6、Httpbin服务介绍
目录 1.Httpbin服务介绍 2.在Windows系统中部署Httpbin服务 3.在Linux系统中部署Httpbin服务 4.Httpbin访问方式 5.Httpbin常用调试接口 6.总结: ...
- 『居善地』接口测试 — 4、Requests库发送GET请求
目录 1.使用Requests库发送带参数的GET请求 2.查看GET请求的内容 3.带请求头.参数的Get请求 Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求. ...
- 『居善地』接口测试 — 7、Requests库使用proxies代理发送请求
目录 1.代理的了解 2.代理的分类 (1)正向代理 (2)反向代理 (3)总结 3.Requests库使用代理 4.总结 1.代理的了解 在上图中我们可以把Web server看成是Google服务 ...
- 『居善地』接口测试 — 11、接口签名sign原理
目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件
目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...
随机推荐
- 复现Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)
靶机IP(Ubuntu):192.168.43.185 攻击IP(kali):192.168.43.37 一.docker环境搭建 打开vulhub靶机,目录定位到vulhub-master/shir ...
- 3-5年以上的Android原生开发如何深入进阶?高级工程师必须要掌握哪些?
前言 曾听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作.这种观点可能是很多Android开发者最开始入行的原因之一. 在工作初期,工作主要是按照业务需求实 ...
- 用最容易的方式学会单链表(Python实现)
单链表与数组 在本博客中,我们介绍单链表这种数据结构,链表结构为基于数组的序列提供了另一种选择(例如Python列表). 基于数组的序列也会有如下缺点: 一个动态数组的长度可能超过实际存储数组元素所需 ...
- 【js】Leetcode每日一题-解码异或后数组
[js]Leetcode每日一题-解码异或后数组 [题目描述] 未知 整数数组 arr 由 n 个非负整数组成. 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encode ...
- PHP 判断当前日期是否是法定节假日或者休息日
1.代码如下 $date = date("Ymd",time()); $url = "http://api.goseek.cn/Tools/holiday?date=&q ...
- QFNU-11.08training
7-1 阅览室 题目: 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超过10 ...
- python函数默认值只初始化一次
当在函数中定义默认值时,值初始化只会进行一次,就是执行到def methodname时执行.看下面代码: from datetime import datetime def test(t=dateti ...
- qsort和sort学习与比较
阅读另一篇博文Uva 642 - Word Amalgamation sort qsort 1.qsort函数: 原 型: void qsort(void *base, int nelem, int ...
- Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)
1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- [转载]虚拟化之KVM配置
虚拟化之KVM配置 2017-11-06 [TOC] 虚拟化:通过虚拟化工具把cpu,内存,硬盘等真实硬件资源给模拟成更少的虚拟硬件资源.进行虚拟化的好处是,最大限度的利用硬件资源.也是云计算的基础. ...