前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MockServer工具-Moco

MockServer工具-Moco

作者头像
用户5521279
发布2020-11-02 10:24:19
1.1K0
发布2020-11-02 10:24:19
举报
文章被收录于专栏:搜狗测试

前言

前段时间介绍了Mock基本知识以及市面上常见的Mock工具(Mock工具介绍),今天重点介绍小编在测试过程中使用的Mock工具-Moco。

为什么使用Moco

1.Mock简便性:简单上手,尽量减少学习成本。

2.项目开源(https://github.com/dreamhead/moco)

3.部署容易:Moco的运行非常简单,只需要一行命令即可。

4.Mock参数配置:Moco可以将需要返回的具体结果写在Json文件中;YApi可以通过mockjs、json-schema进行数据Mock,扩展性更好,但指定返回结果成本较高。

Moco介绍

Moco本身支持API和独立运行两种方式。通过使用API,开发人员可以在JUnit、JBehave等测试测试框架里使用Moco,极大程度地降低了集成点测试的复杂度。

Moco可以提供以下服务:

  • HTTP APIs
  • Socket APIs
  • REST API

Moco原理简介

Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起请求满足一个条件时,它就给回复一个应答。Moco的底层没有依赖于像Servlet这样的重型框架,而是基于一个叫Netty网络应用框架直接编写的,这样一来,绕过了复杂的应用服务器,所以,它的速度是极快的。

Moco独立运行所需环境

Moco独立运行时所需准备的有:

  • Java运行环境
  • moco-runner-0.11.0-standalone.jar

如何运行Moco

Moco的运行非常简单,只需要一行命令即可

如在命令行中运行:

代码语言:javascript
复制
java -jar <path-to-moco-runner> http -p <monitor-port> -c < configuration -file>

 
<path-to-moco-runner>:moco-runner-0.11.0-standalone.jar包的路径

<monitor-port>:http服务监听的端口

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

Moco工作流程

Moco配置文件详解

1.配置文件添加注释

代码语言:javascript
复制
[

  {

    "description": "这是一个注释行,对该接口进行描述",

    "request":{

        "uri": "/sogou"

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

2.约定接口Uri

可以在uri中使用正则表达式进行匹配

其中request这个key为请求相关内容,response为返回的相关内容

代码语言:javascript
复制
[

  {

    "description": "request中uri必须是/sogou,才能匹配该接口",

    "request":{

        "uri": "/sogou"

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

3.约定请求参数

代码语言:javascript
复制
[

  {

    "description": "request中必须包含参数param=test,才能匹配该接口",

    "request":{

        "queries":{

            "param": "test"

        }

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

4.约定请求方法

代码语言:javascript
复制
[

  {

    "description": "request必须是get请求,才能匹配此接口,除此外还支持post|put|delete|Head方法",

    "request":{

        "method": "get",

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

5.约定HTTP版本

代码语言:javascript
复制
[

  {

    "description": "request必须是HTTP/1.0,才能匹配此接口",

    "request":{

        "version": "HTTP/1.0",

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

6.约定HTTP请求头部

代码语言:javascript
复制
[

  {

    "description": "request必须包含头部:application/json,才能匹配此接口",

    "request":{

        "method": "get",

        "headers": {

        "content-type": "application/json"

      }

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

7.约定Cookie

代码语言:javascript
复制
[

  {

    "description": "request必须包含cookies:login-true,才能匹配此接口",

    "request":{

        "method": "get",

        "cookies": {

        "login": "true"

      }

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

8.约定请求Form

代码语言:javascript
复制
[

  {

    "description": "request必须包含表单:name-sogou,才能匹配此接口",

    "request":{

        "method": "get",

        "forms": {

        "name": "sogou"

      }

    },

    "response": {

      "file": "sogou.response"

    }

  }

]

9.设置Response Content

代码语言:javascript
复制
[

  {

    "description": "接口匹配后,response返回文件sogou.response,文件编码为GBK",

    "request":{

        "method": "get"

    },

    "response": {

      "file": "sogou.response",

      "charset": "GBK"

    }

  }

]

10.设置Response 状态码

代码语言:javascript
复制
[

  {

    "description": "接口匹配后,response返回状态码500",

    "request":{

        "method": "get"

    },

    "response": {

      "status": "500"

    }

  }

]

11.设置重定向

代码语言:javascript
复制
[

  {

    "description": "接口匹配后,返回重定向地址",

    "request":{

        "uri": "/sogou"

    },

    "redirectTo": "www.sogou.com"

 }

]

Moco不足

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.配置文件添加注释
  • 3.约定请求参数
  • 5.约定HTTP版本
  • 6.约定HTTP请求头部
  • 7.约定Cookie
  • 9.设置Response Content
  • 10.设置Response 状态码
  • 11.设置重定向
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档