Skip to content

【实战】mock 实战练习

Mock 实战练习

需求说明

Mock 的核心其实就是要修改数据模拟各种场景。本实战重点介绍 RewriteMap LocalMap Remote 这几种方法如何完成 Mock 测试。

实战思路

uml diagram

Rewrite

Rewrite 就是接口重写。

Charles 的 Rewrite 功能非常强大,可以重写接口所有元素的内容,例如:header、host、url、path、query param、response status、body。总之使用 Rewrite 请求和响应都可以进行修改。

Rewrite 原理

Rewrite 的过程是这样的。客户端发出来的请求会先发到 charles 上,Charles 拿到请求之后按照 rewrite 设置的规则去修改请求里面的内容。改完请求,Charles 会把请求再发到服务端。然后服务端也是先把 response 先发给了 charles,charles 收到了 response 之后,按照 rewrite 设置的规则去修改 response,然后把修改完的数据再发给客户端。

Rewrite 实战
  • 场景
    • 修改雪球行情页面的股票名称
    • 修改雪球行情页面的股票价格
  • 设置方法
    • Tools -> Rewrite
    • 勾选 Enable Rewrite
    • 点击下方 Add 按钮新建一个重写的规则
    • 在右侧编辑重写规则
    • 点击 ok 生效

Map Local

Map Local 就是使用本地的数据来代替线上数据。它可以很方便的改变接口的返回数据,模拟不同场景进行测试。

Map Local 原理

Map Local 的时候,Charles 压根就没有把请求发到服务器去做请求,直接帮我们把本地的一个文件的数据返回给了客户端。

Map Local 实战
  • 场景
    • 修改雪球行情页面的股票名称
    • 修改雪球行情页面的股票价格
  • 操作
    • 准备本地接口响应数据
    • 配置 Map Local
      • 选择要进行 Map Local 的接口
      • 鼠标右键 -- 选择 Map Local 选项进入设置界面
      • Map From 填写接口的信息
      • Map To 选择本地文件
    • 修改 Map Local 配置:Tools -- Map Local

Map Remote

在测试的时候,一般会在很多个环境中,比如一开始服务没有上线的时候,需要在线下的测试环境中进行测试。等到服务完成开发之后,可能就可以切换到预发布环境中继续测试。等到服务端的功能没有问题了,还会正式发布到线上,还需要去线上进行测试。

在这种情况下,如果使用 Map Remote 功能就可以轻松的切换各种环境了。

Map Remote 原理

Map Remote 是将指定的网络请求重定向到另一个服务器。

Map Remote 实战
  • 场景
    • 访问百度,转发至豆瓣
    • 访问开发环境,转发至测试环境
      • 前端:https://service.hogwarts.ceshiren.com/
      • 后端测试环境:https://backend.service.hogwarts.ceshiren.com/test/report/showMapLocal
      • 后端开发环境: https://backend.service.hogwarts.ceshiren.com/dev/report/showMapLocal
  • 操作
    • 选择接口,点击鼠标右键,选择 Map Remote 进入到设置页面
    • 设置重定向的接口信息
    • 点击 ok 生效
    • 修改设置:Tools -- Map Remote 找对对应接口双击进入修改界面

总结

  • Rewrite
  • Map Local
  • Map Remote