什么是接口Mock测试

  • Mock 测试定义

    Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个模拟的对象来创建以便测试的测试方法

  • Mock 测试应用场景

    • 测试接口中需要依赖第三方接口返回值进行逻辑处理,例如银行的支付接口
    • 模拟异常数据返回,例如需要返回特殊字符、不同长度、类型格式内容
    • 前后端开发并行工作调式,后端接口未完成时,前端调用Mock数据进行调式
    • 隔离环境,保证数据安全和正确性,对于POST、PUT、DELETE等请求进行隔离,防止修改数据出现其他未知错误

Mock常见实现的几种方式

  • fiddler/Charles 工具
  • Mock Server-Moco
  • 自己开发Mock平台

通过fiddler

  • 在fiddler界面----找到要mock的接口

    以URI:/api/v1/my/index为例,fiddler的web session界面找到下面的接口 /api/v1/my/index 这个接口

  • 保存接口响应数据

    在接口上进行右键点击,选择保存 ->响应 -> 响应主体,保存到指定文件夹:my_index.json
    在这里插入图片描述

  • 修改数据

    修改保存到本地的my_index.json文件,将用户名加上特殊字符。

  • 添加 /api/v1/my/index 到mock规则

    在web session面板中找到对应的请求,然后将其拖到或者选中接口点击添加到AutoResponder面板中,在RuleEditor中单击“Find a file…”,选择本地json文件的路径,点击保存。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 激活规则

    选中启用规则和请求传递,激活规则。
    在这里插入图片描述

  • 刷新页面

    刷新浏览器(或直接访问接口),就可以看到效果了,后面想要修改其他的数据,只需修改本地保存的json文件即可。

  • 取消mock

    只需要在自动响应规则列表区域界面,取消勾选即可
    在这里插入图片描述

Mock Server-Moco

Server-Moco 说明
  • Moco是一个简单搭建模拟服务器的框架(工具),可以模拟http、https、socket等协议
  • 基于Java开发的开源项目,Github地址:https://github.com/dreamhead/moco
  • 原理:Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起的请求满足某个条件时,就会返回指定的响应数据,需要修改
环境搭建
  • 下载安装:依赖JDK环境,执行电脑安装好JDK,建议安装JDK1.8版本
  • Server-Moco下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner,选择相应版本,本次下载最新版1.3.0,下载下来就是moco-runner-1.3.0-standalone.jar包
    在这里插入图片描述
    在这里插入图片描述
Moco 使用
启动参数说明
java -jar <path-to-moco-runner> http -p <monitor-port> -c <configuration-file>

java -jar <path-to-moco-runner> http -p <monitor-port> -g <configuration-file>
  • path-to-moco-runner:jar包的路径
  • monitor-port:http服务监听的端口
  • configuration-file:配置文件路径
Mock单个请求
  • 创建一个json 文件,名为 login.json,内容如下:
[
    {
        "description": "登录",
        "request": {
            "uri": "/login"
        },
        "response": {
			"text":"登录成功"
        }

    }
]
  • 启动 Mock 服务
  java -jar moco-runner-1.1.0-standalone.jar http -p 8082 -c login.json

在这里插入图片描述

  • 在Postman 发送请求:http://localhost:8082/login
    在这里插入图片描述
Mock多个请求
  • 在创建一个json 文件,名为 home.json,内容如下:
[
    {
        "description": "首页",
        "request": {
            "uri": "/home"
        },
        "response": {
			"text":"进入首页"
        }

    }
]
  • 创建一个请求管理配置文件,名为 config.json,内容如下:
[
    {"include": "login.json"},
    {"include": "home.json"}
]
  • 启动 Mock 服务
  java -jar moco-runner-1.1.0-standalone.jar http -p 8082 -g config.json

在这里插入图片描述

  • 在Postman 发送请求:http://localhost:8082/login 和 http://localhost:8082/home
    在这里插入图片描述
常见参数配置
  • 请求方式,通过method参数定义
[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post"
        },
        "response": {
            "text": "登录成功"
        }
    }
]
  • 请求参数,通过queries参数定义
[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post",
            "queries": {
                "username": "king",
                "pwd": 123456
            }
        },
        "response": {
            "text": "登录成功"
        }
    }
]
  • 请求头,通过headers参数定义
[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post",
            "headers": {
                "appId": "4275CCE0-CE16-4BCC-9AF5-31CA133AC9AD"
            }
        },
        "response": {
            "text": "登录成功"
        }
    }
]
  • 表单请求体,通过forms参数定义
[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post",
            "forms": {
                "username": "king",
                "password": 123456
            }
        },
        "response": {
            "text": "登录成功"
        }
    }
]
  • JSON请求体,通过json参数定义
[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post",
            "headers": {
                "Content-Type": "application/json"
            },
            "json": {
                "username": "king",
                "password": 123456
            }
        },
        "response": {
            "text": "登录成功"
        }
    }
]
  • HTTP响应状态码,通过status参数定义
[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post"
        },
        "response": {
            "status": 500,
            "text": "服务器出现异常!"
        }
    }
]
  • JSON响应数据,通过json参数定义
[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post"
        },
        "response": {
           "headers": {
                "Content-Type": "application/json;charset=UTF-8"
            },
            "json": {
                "code": "0",
                "msg": "操作成功",
                "data": {
                    "userID": 3175896456,
                    "token": "17e6ad42cff592-0dfc3f6fa02aee-c343365-1fa400-17e6ad42d00891"
                }
            }
        }
    }
]

自己开发Mock平台

使用Mock注意点

  • 当把mock接口换成实际接口后,测试也必须把之前的测试重新做一遍
  • 测试完毕,上线前一定确保,为了mock而做的相关代码/配置文件的修改

以上为内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处!

如果觉得文章不错,欢迎关注微信公众号,微信公众号定期推送相关测试技术文章
个人微信号

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐