• 客户要求进行完整的产品展示,人员和时间都有限,来不及开发后端服务。。。
  • 工期比较紧的项目,前端已开发完成,需要调试,后端接口还未开发完成。。。
  • 公司某个项目依赖于第三方服务,但是第三方服务不方便频繁调用。。。

实际的工作当中,从商务到开发再到测试,经常会遇到上述所说的情况,如此的反复就造成了项目

的进度受限,这被称为短板效应。此时,Moco框架可以很好的解决这些问题。

一、Moco简介

  Moco是基于Java开发的开源项目,是一个简单搭建模拟服务器的框架,可以模拟http、https、

socket等协议。其运行原理是Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某

个端口)。当发起的请求满足配置中的条件时,会返回指定的响应数据。

  Moco有两种使用模式:API模式和独立运行模式,如果是编写Java应用或者以其它JVM上的语

言编写的应用,可以采用直接调用API的模式;独立运行模式就是下载moco服务jar包,然后根据实

际需要编写配置文件或者进行二次开发。

二、环境配置

  1.安装JDK并配置好环境变量,这个不再细说,大家自行百度。

  2.下载服务jar包:Moco下载

下载完成的jar包是这样的 moco-runner-1.1.0-standalone.jar ,本文采用的是最新版本。

三、运行Moco

我们新建一个文件夹,命名为Moco,把jar包放在这里,新建test.json文件,内容如下:

[
{
"response": {
"text": "Hello world!"
}
}
]

在Moco文件夹中点击鼠标右键打开终端,输入以下命令:

java -jar moco-runner-1.1.0-standalone.jar start -p 8080 -c test.json

<path-to-moco-runner>:jar包存放路径,我这里在同一个文件夹,直接输入jar包名字

<monitor-port>:服务监听的端口,设置一个未被占用的端口

<configuration-file>:配置文件存放路径

如下图中所示,表示启动成功:

此时,在浏览器中输入: http://localhost:8080 可以看到Hello word!,说明我们搭建的模拟

服务器可以正常使用了。

四、Moco常用配置参数

  Moco主要致力于服务器的配置,目前只有两种API:Request 和 Response。两种API都有

各自的属性,在配置使用的过程中,一定要遵循这些方法。

  Request 请求

有14个固定属性: method, headers, json, factory, uri, text, cookies, xpaths,json_paths,

version, file, queries,path_resource,forms 。

  Response 响应

有12个固定属性: status, attachment, headers, version, factory, file,text, proxy, cookies,

json, latency, path_resource 。

1.普通的GET请求

 {
   "description": "查找书籍",
"request" :
{
"method" : "get",
"uri" : "/article/book/"
},
"response" :
{
"text" : "响应内容"
}
}

2.GET方法带参数

{
"description": "查找具体书籍",
"request": {
     "method": "get"
"uri": "/article/book",
"queries": {
"name": "kaka",
"id": "75"
}
},
"response": {
"text": "响应内容"
}
}

3.POST方法定义请求头和JSON请求体

[
{
"description": "登录",
"request": {
"uri": "/login",
"method": "post",
"headers": {
"Content-Type": "application/json"
},
"json": {
"username": "13812345678",
"password": "123456"
}
},
"response": {
"text": "login success"
}
}
]

4.定义响应结果为JSON格式

[
{
"description": "登录",
"request": {
"uri": "/login"
},
"response": {
"headers": {
"Content-Type": "application/json;charset=UTF-8"
},
"json": {
"code": "00",
"msg": "登录成功",
"data": {
"userId": 5,
"token": "jvuRbbA5EKPzJTfZbDAY9SMzq40YBfws"
}
}
}
}
]

五、Moco实战应用

1.单体配置

将所有的接口请求和返回数据写入到同一个json文件中,这种配置适用于请求报文和响应结果

内容不大的情况,如下图所示将整个配置写入到 config.json 中:

[
{
"description": "登录",
"request": {
"uri": "/login",
"method": "post",
"headers": {
"Content-Type": "application/json"
},
"json": {
"username": "13312345678",
"password": "123456"
}
},
"response": {
"headers": {
"Content-Type": "application/json;charset=UTF-8"
},
"json": {
"retCode": "00",
"retMsg": "success",
"data": {
"userId": 6,
"token": "ked6jsdXkjdwm37dy6"
}
}
}
}
]

在终端中运行启动命令: java -jar D:\Moco\moco-runner-1.1.0-standalone.jar start -p 8080 -c config.json

服务启动后,使用接口测试工具调用该配置中的接口。

2.全局配置

Moco支持在全局的配置文件中引入其他配置文件,我们可以根据实际需要分别定义配置文件,然后在全局

文件中引用。这样,既便于管理,又轻松的解决了接口请求报文或响应数据太大不方便查看的问题。

a.在Moco文件夹中创建login文件夹,在login文件夹中创建 local_login_req.json 和 local_login_res.json 两个

文件;

b.在Moco文件夹中创建 global_settings.json 文件

在 local_login_req.json 中写入:

[
{
"description": "登录",
"request": {
"uri": "/login",
"method": "post",
"headers": {
"Content-Type": "application/json"
},
"json": {
"username": "13300001122",
"password": "123456"
}
},
"response": {
"headers": {
"Content-Type": "application/json;charset=UTF-8"
},
"file": "./login/local_login_res.json"
}
}
]

在 local_login_res.json 中写入:

[
{
"retCode":"00",
"retMsg":"登录成功",
"data":{
"userId":2,
"token":"ked6jsdXkjdwm37dy6xm"
}
}
]

在 global_settings.json 中写入:

[
{
"include":"login/local_login_req.json"
}
]

准备完成后,在当前目录的终端中输入: java -jar moco-runner-1.1.0-standalone.jar start -p 8080 -g global_settings.json

注意:在启动服务的命令中, -c 是加载单体配置文件, -g 是加载全局配置文件。两者不可以混淆,否则

配置文件解析会报错。

Moco开源链接:https://github.com/dreamhead/moco

Mockserver之Moco框架搭建使用的更多相关文章

  1. 『居善地』接口测试 — 12、Moco框架介绍

    目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...

  2. python,mock-server之moco

    python,mock-server之moco1.mock使用:mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口,此时服务端没开发完成,或者说没搭建测 ...

  3. 郑晔谈 Moco 框架的开发:写一个好的内部 DSL ,写一个表达性好的程序

    作者:张龙 出处:http://www.infoq.com/cn/news/2013/07/zhengye-on-moco 郑晔谈Moco框架的开发:写一个好的内部DSL,写一个表达性好的程序 作者  ...

  4. Moco 框架以及其在 Web 集成测试的应用

    转自:https://www.ibm.com/developerworks/cn/web/1405_liugang_mocowebtest/ Moco 框架以及其在 Web 集成测试的应用 我们往往将 ...

  5. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  6. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...

  7. ABP框架搭建项目系列教程基础版完结篇

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 经过前面十二篇的基础教程,现在终于该做个总结了. 回顾 第一篇,我们建议新手朋友们先通过ABP官网的启动模板生成解决方案,因为这样 ...

  8. 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】

    经过23天的艰苦斗争,终于搞定了数据采集系统~徐培成老师很厉害啊,明明只是用了10天就搞定的项目我却做了23天,还是模仿的...呵呵,算了,总之最后总算是完成了,现在该好好整理该项目了. 第一天的内容 ...

  9. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

随机推荐

  1. X86保护机制

    目录 保护机制的开启与关闭 描述符表限长检查 段限长检查 段类型检查 类型信息的存储 类型检查 空选择子的检查 特权级检查 访问数据段时的特权级检查 访问代码段中的数据 堆栈寄存器SS的特权级检查 在 ...

  2. IdentityServer 3.1.x 迁移到 4.x

    一.前言 IdentityServer4 4.x已经正式发布了,根据官方的 Release Note,3.1.x 到 4.x 的变更也是非常多,今天在将代码迁移到 4.x 遇到了一些问题在此记录下来, ...

  3. keccak和sha3的区别

    keccak应用 在以太坊中,用keccak哈希算法来计算公钥的256位哈希,再截取这256位哈希的后160位哈希作为地址值. keccak和sha3的区别 sha3由keccak标准化而来,在很多场 ...

  4. 习题3-4 周期串(Periodic Strings, UVa455)

    #include<stdio.h> #include<string.h> char s[100]; int main() { int T; scanf("%d&quo ...

  5. RDS 事务型数据库sql

    -- 替换json中数据 select SUBSTRING_INDEX(SUBSTRING_INDEX('[{"channelCode":"MOBIL",&qu ...

  6. 【Targan+LCA】HDU 3686 Traffic Real Time Query

    题目内容 洛谷链接 给出一个\(n\)个节点,\(m\)条边的无向图和两个节点\(s\)和\(t\),问这两个节点的路径中有几个点必须经过. 输入格式 第一行是\(n\)和\(m\). 接下来\(m\ ...

  7. lumen-ioc容器测试 (6)

    lumen-ioc容器测试 (1) lumen-ioc容器测试 (2) lumen-ioc容器测试 (3) lumen-ioc容器测试 (4) lumen-ioc容器测试 (5) lumen-ioc容 ...

  8. ImageMagick:用identify得到图片的平均颜色(基本颜色/主色调)

    一,平均颜色的用途: 很多app在流式的展示图片时, 在图片没加载出来之前, 不是使用统一的背景图, 而是先显示一个纯色的背景, 而背景色和图片的颜色非常接近, 这样给用户的体验会更好. 我们这里演示 ...

  9. centos8上安装ImageMagick6.9.10并压缩图片生成webp缩略图

    一,ImageMagick的作用: ImageMagick 是一个用来创建.编辑.合成图片的软件. 它可以读取.转换.写入多种格式的图片. 功能包括:图片切割.颜色替换.各种效果的应用, 图片的旋转. ...

  10. py正则表达式(全是干货系列)

      正则表达式的作用在这里不多赘述了,反正处理文本任务贼六就对了.Python中的正则表达式是内置在re模块中的,我们就对这个模块进行详细地讲解.这是一篇媲美帮助文档的文章!对就这么自信,不服你顺着网 ...