Charles提供了Map Remote和Map Local两个功能。
- Map Remote是将指定的网络请求重定向到另一个网址。
- Map Local是将指定的网络请求重定向到本地文件。
一、Map Remote
假设代码中调用了接口A,但是接口A的响应结果不能满足需求;此时,有另一个接口B,可以返回满足需求的响应数据。那么不想将调用接口A的代码直接改为调用B,则可以使用Charles中的Map Remote实现。
# 接口A的地址
http://xxx/portal/home/pullRefresh?d={}&c={"cc":1602,"ct":20,"dt":1,"ov":14,"p":14584,"v":"9.0.5"}
# 接口B的地址
http://172.31.0.158:8080/portal/home/pullRefresh?d={}&c={"cc":1602,"ct":20,"dt":1,"ov":14,"p":14584,"v":"9.0.5"}
1)添加Map Remote
2)启用Map Remote
3)重新调用接口,查看请求和响应数据
从下图结果可以看出,实际上请求进行了重定向,访问了B接口。
二、Map Local
假设调用下面接口,可以得到对应的响应结果数据。通过Map Local可以轻易改变接口的响应结果数据,进而对接口进行异常测试。
# 接口地址
http://172.31.0.158:8080/portal/home/pullRefresh?d={}&c={"cc":1602,"ct":20,"dt":1,"ov":14,"p":14584,"v":"9.0.5"}
# 响应结果数据
{
"success": true,
"errorCode": 710000,
"msg": "OK",
"data": {
"successFlag": true,
"imageZipUrl": "http://10.10.33.144/fb2/t2/group1/M00/00/59/CgohkFhZ9V-CidqAARAhOcRJ4cAAAAqgKGEzIABECc993.zip",
"imageZipMd5": "fe222cb5fa6fa915524ba9f73fb3c3de",
"startTime": "2016-12-23 08:55:00",
"endTime": "2016-12-29 15:00:00"
}
}
1)创建本地文件
在本地创建一个文本:json.txt,在其中复制上面的json数据,并且将属性imageZipMd5的值修改为:62cddce134c9625896b361137bfabe4e。
{
"success": true,
"errorCode": 710000,
"msg": "OK",
"data": {
"successFlag": true,
"imageZipUrl": "http://10.10.33.144/fb2/t2/group1/M00/00/59/CgohkFhZ9V-CidqAARAhOcRJ4cAAAAqgKGEzIABECc993.zip",
"imageZipMd5": "62cddce134c9625896b361137bfabe4e",
"startTime": "2016-12-23 08:55:00",
"endTime": "2016-12-29 15:00:00"
}
}
2)配置Map Local,链接本地的json.txt文件
3)重新调用接口,查看响应数据
接口的响应结果数据中,属性imageZipMd5的值已经变成本地文件json.txt中的值。通过这种方式,可以随意修改json.txt里面的内容,覆盖更多的异常接口测试场景。