【实战】mock 实战练习
Mock 实战练习
需求说明
Mock 的核心其实就是要修改数据模拟各种场景。本实战重点介绍 Rewrite、Map Local、Map Remote 这几种方法如何完成 Mock 测试。
实战思路
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