首页 > 其他分享 >Mock工具之Moco使用

Mock工具之Moco使用

时间:2023-10-09 14:36:12浏览次数:32  
标签:请求 text 工具 request moco json post Moco Mock

一、什么是Mock

mock英文单词有愚弄、嘲笑、模拟的意思,这里主要是模拟的意思

二、什么是Moco

  • 开源的、基于java开发的一个mock框架
  • 支持http、https、socket等协议

三、Mock的特点

  • 只需要简单的配置request、response等即可满足要求

  • 支持在request 中设置headers、cookies等

  • 支持GET、POST、PUT、DELETE等请求方法

  • 无需环境配置,有Java环境即可

  • 修改配置文件后,立刻生效

  • 对可能用到的数据格式都支持,如json、text、xml、file等。

四、什么场景会用到

  • 模拟第三方接口的返回
  • 后端接口还没有开发完毕,前端想要进行联调
  • 接口测试过程中,可能某些接口依赖有问题,也可以使用mock

五、Moco的原理

  • 根据json配置文件,启动一个http的服务,监听指定的端口

六、环境准备

七、环境搭建

  • 安装jdk,配置环境变量
  • 把moco-runner-1.5.0-standalone.jar 和配置文件如moco.json放同一目录
    image

八、Moco配置文件

moco配置文件格式必须是json格式。配置文件是个数组,也就是说,可以在一个文件中配置多个接口的请求和响应

配置文件常用字段
image

九、启动

# http 指定协议
# -p 指定端口
# -c 指定配置文件
java -jar moco-runner-1.5.0-standalone.jar http -p 8088 -c moco.json

十、示例

  • demo1
[
  {
    "description":"这是一个moco例子",
    "request":{
        "uri":"/demo"
    },
    "response":
    {
        "text":"Hello,Moco",
        "status": "200"
    }
  }
]
  • get请求,不带参数
[
    {
    "description":"这是一个get请求,不带参数",
    "request":{
        "uri":"/goods",
        "method": "get"
    },
    "response":
    {
        "headers": {
            "Content-Type": "text/plain; charset=GBK"
        },
        "text":"这是一个GET请求,不带参数",
        "status": "200"
    }
  }
]
  • get请求,带参数
[
	{
    "description":"这是一个get请求,带参数",
    "request":{
        "uri":"/GetWithQuery",
        "method": "get",
        "queries": {
            "username": "john",
            "password": "123123"
        }
    },
    "response":
    {
        "headers": {
            "Content-Type": "text/plain; charset=GBK"
        },
        "text":"这是一个GET请求,带参数",
        "status": "200"
    }
  },
]
  • post请求,带参数
[
	{
    "description":"这是一个post请求,带参数",
    "request":{
        "uri":"/PostWithQuery",
        "method": "post",
        "queries": {
            "username": "john",
            "password": "123123"
        }
    },
    "response":
    {
        "text":"这是一个POST请求,带参数",
        "status": "200",
        "headers": {
            "Content-Type": "text/plain; charset=GBK"
        }
    }
  }
]
  • post请求,不带参数
[
	{
        "description": "这是一个post请求,不带参数",
        "request": {
            "uri": "/WithPost",
            "method": "post"
        },
        "response": {
            "text": "这是一个post请求,不带参数",
            "status": "200",
            "headers": {
                "Content-Type": "text/plain; charset=GBK"
            }
        }

    }
]
  • post请求,带cookie参数
[
	{
        "description": "这是一个post请求,带cookie参数",
        "request": {
            "uri": "/PostWithCookie",
            "method": "post",
            "cookies": {
                "token": "123123"
            }
        },
        "response": {
            "text": "这是一个post请求,带cookie参数",
            "status": "200",
            "headers": {
                "Content-Type": "text/plain; charset=GBK"
            }
        }

    }
]
  • post请求,带forms参数
[
	{
        "description": "这是一个post请求,带forms参数",
        "request": {
            "uri": "/PostWithForm",
            "method": "post",
            "forms": {
                "username": "jake",
                "password": "123123"
            }
        },
        "response": {
            "text": "这是一个post请求,带forms参数",
            "status": "200",
            "headers": {
                "Content-Type": "text/plain; charset=GBK"
            }
        }

    }
]
  • 重定向
[
	{
        "description": "这是一个重定向",
        "request": {
            "uri": "/redirect",
            "method": "get"

        },
        "redirectTo": "http://www.baidu.com"

    }
]

十一、多配置文件模式

为了模拟多个接口,以及方便管理这些接口,moco-runner增加了配置模式,具体如下:

  • 首先,创建多个接口文件,比如:login.json,index.json
  • 然后,在当前文件夹下创建配置文件,config.json,用于管理接口文件login.json,index.json
  • 最后,用参数-g启动服务

接口文件moco.json

[
  {
    "description": "Moco Demo",
    "request": {
      "method": "get",
      "uri": "/demo"
    },
    "response": {
      "text": "Hello Moco"
    }
  },
  {
    "description": "users",
    "request": {
      "method": "get",
      "uri": "/users"
    },
    "response": {
      "headers": {
        "Content-Type": "application/json;charset=utf-8"
      },
      "json": {
        "code": 200,
        "msg": "success",
        "data": [
          {
            "id": 1,
            "username": "张三"
          },
          {
            "id": 2,
            "username": "李四"
          },
          {
            "id": 3,
            "username": "王五"
          }
        ]
      }
    }
  },
  {
    "description": "这是一个get请求,不带参数",
    "request": {
      "uri": "/goods",
      "method": "get"
    },
    "response": {
      "text": "这是一个GET请求,不带参数",
      "status": "200"
    }
  }
]

接口文件index.json

[
  {
    "description": "index",
    "request": {
      "method": "get",
      "uri": "/index"
    },
    "response": {
      "text": "Hello home"
    }
  }
]

配置文件config.json

[
	{"include":"index.json"},
	{"include":"moco.json"}

]

十二、中文乱码问题

加上参数 -Dfile.encoding=utf-8
java -Dfile.encoding=utf-8 -jar moco-runner-1.5.0-standalone.jar http -p 8088 -c moco.json

标签:请求,text,工具,request,moco,json,post,Moco,Mock
From: https://www.cnblogs.com/bangbangzoutianya/p/17751479.html

相关文章

  • 最新视频号下载工具(2023.10)
    之前分享好几个视P号视频下载工具,其中还根据转链规则小练了一波python,不过有粉丝说都不能用了,全测了一遍确实如此。对我来说这个功能也算是刚需了,虽然有小程序可以做到解析,但有的用几次就开始收费了,我这种白嫖党肯定不愿意的。然后跟几个大佬聊起来,技术原理还是抓包解析数据,熟络......
  • UT棘手的对象mock
    工具类ReflectionTestUtils获取内部类classClass.forName("com.xxx.xxxx.XXX.MetaContextHolder$ContextManagerHolder"),获取静态字段、private字段ReflectionTestUtils.getField(Class.forName("com.xxx.xxxx.XXX.MetaContextHolder$ContextMa......
  • TinyMCE——自定义工具栏按钮(基础按钮、下拉框按钮、弹框按钮等)
    详细配置查看官方文档:https://www.tiny.cloud/docs/tinymce/6/custom-toolbarbuttons/  配置方式:tinymce.init({selector:'#editor',toolbar:'myCustomToolbarButton',setup:(editor)=>{editor.ui.registry.addButton('myCustomToolb......
  • fildder工具--过滤静态文件
    选中Filters->RequestHeader模块->勾选HideifURLcontains->输入正则表达式:REGEX:(?insx)/[^\?/]*.(css|ico|jpg|png|gif|bmp|wav|js|jpeg)(\?.*)?$点击Actions->选择RunFiltersetnow    ......
  • 解放双手的在线工具
    1. AliyunJavaInitializr 在线创建项目脚手架地址:https://start.aliyun.com/bootstrap.html2. magicalcoder地址:http://bbs.magicalcoder.com/  3.菜鸟工具http://c.runoob.com/ 4. BEJSONBEJSON站内提供了很多实用的小工具。像我最近正在开发一个调度任......
  • fildder工具--过滤展示指定的host包
    fildder过滤指定的host选中Filters->第二个下拉框选中showonlethefollowinghosts->输入指定的host地址如:*.baidu.com(如果有多个地址时,每个地址后用;分割)->点击Actions->选择RunFiltersetnow->Ctrl+x清空fildder抓取到的包->重新请求地址(比如设置的百度,在浏览器中访......
  • 邮件群发工具哪个好
    邮件群发是一种通过电子邮件向多个收件人发送邮件的方式。同时,邮件群发也是一种低成本、高回报的营销手段。因此邮件群发被广泛应用于各种营销活动中,例如活动邀请、新品上线、产品促销等等。而群发邮件最有效的方式就是借助邮件群发工具,而市面上的邮件群发工具五花八门,找到一款适合......
  • 工具对比
      一说到信号完整性(SI/PI/EMC),绕不过的一个话题就是:仿真软件。目前市面上主流有:HyperLynx,Ansys,ADS等等。各个仿真软件大体上相同,不同点就是采取不同的算法。   本例以Cadence的Sigrity、ADS的SIpro&Ansys的SIwave三款软件来进行信号线的参数提取。 ......
  • Python入门示例系列03 安装Python开发工具
    视频:https://www.bilibili.com/video/BV1yZ4y1f7so?spm_id_from=333.999.0.0 Python常用的IDE有:IDLE(python自带,推荐安装Python),PyCharm(推荐安装),WingIDE,JupyterNotebook(推荐安装Anaconda3),其中 IDLE,PyCharm,WingIDE是专为Python语言使用的IDE。 下载Python Python3.6......
  • 文件处理工具
    packagecom.thtf.zwdsj.fangjia.utils;importcom.thtf.zwdsj.code.common.exception.CommonException;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.io.IOUtils;import......