Mock工具之Moco使用

原文链接:https://blog.youkuaiyun.com/heiwa110/article/details/133706160

一、什么是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的服务,监听指定的端口
六、环境准备
jdk1.8https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
mocohttps://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/
七、环境搭建
安装jdk,配置环境变量
把moco-runner-1.5.0-standalone.jar 和配置文件如moco.json放同一目录
八、Moco配置文件
moco配置文件格式必须是json格式。配置文件是个数组,也就是说,可以在一个文件中配置多个接口的请求和响应

配置文件常用字段

九、启动
# 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": "/goods",
      "method": "get",
      "queries": {
        "id": "g01"
      }
    },
    "response":
    {
        "headers": {
            "Content-Type": "application/json;charset=utf-8"
        },
        "json":{"name": "百世可乐","price": 3},
        "status": "200"
    }
 
  }
 
 
]


post请求,带参数,带的是json参数
[
  {
    "description": "这是一个post请求带参数",
    "request": {
      "uri": "/goods",
      "method": "post",
      "json": {
        "id": "g01"
      }
    },
    "response":
    {
        "headers": {
            "Content-Type": "application/json;charset=utf-8"
        },
        "json":{"name": "百世可乐","price": 3},
        "status": "200"
    }
 
  }
 
 
]


post请求,带headers参数
[
  {
    "description": "post请求,带headers参数",
    "request": {
      "uri": "/goods",
      "method": "post",
      "cookies":{"ssid":"666666"},
      "headers":{"authorization": "bearer 123456"},
      "json": {
        "id": "g01"
      }
    },
    "response":
    {
        "headers": {
            "Content-Type": "application/json;charset=utf-8"
        },
        "json":{"name": "百世可乐","price": 3},
        "status": "200"
    }
 
  }
 
 
]


post请求,带forms参数
[
  {
    "description": "这是一个post请求,带forms参数",
    "request": {
      "uri": "/login",
      "method": "post",
      "forms": {
        "username": "admin",
        "password":"123456"
      }
    },
    "response":
    {
        "headers": {
            "Content-Type": "application/json;charset=utf-8"
        },
        "json":{"msg": "登录成功"},
        "status": "200"
    }
 
  }
 
 
]


重定向
[
    {
        "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-8java -Dfile.encoding=utf-8 -jar moco-runner-1.5.0-standalone.jar http -p 8088 -c moco.json
————————————————
                        
原文链接:https://blog.youkuaiyun.com/heiwa110/article/details/133706160

MockMoco 是在软件开发和测试过程中常用于模拟接口行为的工具或技术,它们的目标是提升开发和测试的效率,但实现方式和应用场景有所不同。 ### 关联性 1. **目标一致**:MockMoco 都用于模拟接口行为,帮助开发者和测试人员在真实服务尚未完成或不可用时进行开发和测试工作。例如,在后端接口未完成的情况下,前端可以依赖模拟的接口数据进行开发[^3]。 2. **支持接口测试**:两者都支持接口测试,通过模拟接口返回数据,使得测试可以在没有真实后端的情况下进行[^2]。 3. **文档关联**:Moco 可以通过配置文件(如 JSON)定义接口行为,这种方式类似于 Mock 的配置方式,便于开发者快速定义和调整接口返回[^1]。 ### 区别 1. **实现方式**: - **Mock**:通常是指一种编程技术,通过编写代码来模拟接口行为。Mock 技术可以在单元测试中使用,模拟特定的输入和输出,验证代码的正确性。 - **Moco**:是一个具体的工具,提供了一种不依赖编程语言的方式来快速搭建 Mock 服务。Moco 通过配置文件(如 JSON)定义接口行为,并通过命令行启动服务[^1]。 2. **灵活性与易用性**: - **Mock**:需要编写代码来定义模拟行为,适合需要高度定制化模拟场景的情况。 - **Moco**:通过配置文件即可定义接口行为,适合快速搭建和调整接口模拟服务,尤其适用于非技术背景的团队成员[^1]。 3. **适用场景**: - **Mock**:适用于单元测试、集成测试等需要精确控制接口行为的场景。 - **Moco**:适用于前后端分离开发、接口文档关联、快速搭建 Mock 服务等场景[^3]。 4. **部署与运行**: - **Mock**:通常需要集成到测试框架中,运行时依赖于测试环境。 - **Moco**:可以通过命令行独立运行,不依赖特定的编程语言,适合快速启动和部署[^4]。 ### 示例:Moco 配置文件 ```json [ { "description": "A simple get request", "request": { "method": "get", "uri": "/test" }, "response": { "text": "Hello, Moco!" } } ] ``` 通过上述配置文件,可以快速启动一个 Mock 服务,模拟 `/test` 接口的 GET 请求返回 "Hello, Moco!"。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值