全国咨询/投诉热线:400-618-4000

如何使用moco框架搭建接口mock服务?

更新时间:2020年07月14日16时18分 来源:传智播客 浏览次数:

1、什么是接口Mock测试?

应用场景思考?
1.在前后端分离的项目中,假如后端代码还未开发完,前端代码需要调用后端接口进行调试,该怎么办?
2.本公司的电商平台需要对接第三方支付接口,如何测试支付失败的场景?

1.1 概念

Mock:模拟的、仿制的、虚假的

Mock测试:在测试过程中,对于某些不容易构造或者不容易获取的对象,可以用一个虚拟的对象来代替的测试方法。

接口Mock测试:在接口测试过程中,对于某些不容易构造或者不容易获取的接口,可以用一个模拟接口来代替。

1.2 作用

可以用来解除测试对象对外部服务的依赖,使得测试用例可以独立运行

替换外部服务调用或一些速度较慢的操作,提升测试用例的运行速度

模拟异常逻辑,异常逻辑往往很难触发,通过Mock可以人为的控制触发异常逻辑

团队可以并行工作

1.3 实现方式

接口mock实现的核心思想是搭建一个Mock Server,通过该服务提供mock接口。常见的实现方式有:

使用第三方mock平台

自己开发mock服务

使用mock框架搭建mock服务

2. Moco框架

2.1 Moco简介

Moco是一个简单搭建模拟服务器的框架(工具),可以模拟http、https、socket等协议

基于Java开发的开源项目,Github地址:https://github.com/dreamhead/moco

原理:Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起的请求满足某个条件时,就会返回指定的响应数据。

2.2 环境搭建

Moco运行时所需环境包括:

Java运行环境

安装JDK,并配置环境变量

moco-runner-1.1.0-standalone.jar

下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/moco-runner-1.1.0-standalone.jar


2.3 如何运行Moco

1>创建配置文件

创建配置文件test.json,并输入如下内容:

[

    {

        "description": "首页",

        "request": {

            "uri": "/index"

        },

        "response": {

            "text": "hello world"

        }

    }

]

2>启动http服务

启动命令:

java -jar <path-to-moco-runner> http -p <monitor-port> -c <configuration-file>

示例:

java -jar moco-runner-1.1.0-standalone.jar http -p 9090 -c test.json

3>接口访问

打开浏览器,在浏览器地址栏中输入:http://localhost:9090/index

1594714262878_接口Mock测试01.jpg


2.4 Moco常用配置参数

1.定义请求方式,通过method参数定义

[

    {

        "description": "首页",

        "request": {

            "uri": "/index",

            "method": "post"

    },

        "response": {

            "text": "hello world"

        }

    }

]

2.定义请求参数,通过queries参数定义

[

    {

        "description": "首页",

        "request": {

            "uri": "/index",

            "method": "get",

            "queries": {

                "area": "010",

                "kw": "hello"

            }

    },

    "response": {

        "text": "hello world"

    }

    }

]


3.定义请求头,通过headers参数定义

[

    {

        "description": "登录",

        "request": {

            "uri": "/login",

            "method": "post",

            "headers": {

                "area": "010"

            }

        },

        "response": {

            "text": "hello world"

        }

    }

]

4、定义表单请求体,通过`forms`参数定义

[

    {

        "description": "登录",

        "request": {

            "uri": "/login",

            "method": "post",

            "forms": {

                "username": "tom",

                "password": "123456"

        }

    },

    "response": {

        "text": "login success"

        }

    }

]

5、定义JSON请求体,通过`json`参数定义

[

    {

        "description": "登录",

        "request": {

            "uri": "/login",

            "method": "post",

            "headers": {

                "Content-Type": "application/json"

            },

            "json": {

                "username": "tom",

                "password": "123456"

            }

        },

        "response": {

            "text": "hello world66666"

        }

    }

]


6、定义HTTP响应状态码,通过`status`参数定义

[

    {

        "description": "首页",

        "request": {

            "uri": "/index2"

        },

        "response": {

            "status": 500,

            "text": "error"

        }

    }

]

7、定义JSON响应数据,通过json参数定义

[

    {

        "description": "登录",

        "request": {

            "uri": "/login"

        },

        "response": {

            "headers": {

                "Content-Type": "application/json;charset=UTF-8"

            },

        "json": {

            "code": "10000",

            "msg": "操作成功",

            "data": {

                "uid": 2,

                "token": "xxx"

            }

        }

    }

    }

]

2.5 Moco引入配置文件

moco支持在配置文件中引入其他配置文件,这样可以分服务/模块定义配置文件,便于对配置文件的管理。

实现步骤:

1.分服务/模块定义配置文件,如分别定义index.json和login.json文件

[

    {

        "description": "首页",

        "request": {

            "uri": "/index"

        },

        "response": {

            "text": "hello world"

        }

    }

]

[

    {

        "description": "登录",

        "request": {

            "uri": "/login"

        },

        "response": {

            "text": "success"

        }

    }

]

2.定义启动配置文件,如config.json并引入其他配置文件

[

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

    {"include": "login.json"}

]

3.启动服务

java -jar moco-runner-1.1.0-standalone.jar http -p 9090 -g config.json

注意:通过"-g config.json"指定配置文件

猜你喜欢:
软件测试培训课程
什么是关系型数据库?看这张图就懂了
最全的软件测试面试题(含答案)

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额