Charles 的Map 功能分Map Remote 和Map Local 兩種,顧名思義,Map Remote 是將指定的網絡請求重定向到另一個網址,Map Local 是將指定的網絡請求重定向到本地文件。
Map Remote 使用場景,app或者PC&M站某個需求剛提測階段,新接口A在測試環境有,還有一種極端情況,接口只在開發本地機器提供(無線底層很多接口不維護測試環境),線上環境A接口還未上線,通常的做法是:
1.APP測試包打包時候寫死(這種只能開發本地打包,不能使用jenkins打的包);M站或者網站在配置文件寫死請求地址(各種改配置很麻煩)
2.app全部切換到A接口所在的測試環境,比如sit環境(這種情況下,所有接口都走sit環境,不保證其他接口正常)
如:Map Remote能解決這種情況,APP使用新接口,app線上調用地址是 http://xxx/portal/home/pullRefresh app默認調用也是這個,目前現在接口還沒提供
接口+參數完整請求是:http://xxx/portal/home/pullRefresh?d={}&c={"cc":1602,"ct":20,"dt":1,"ov":14,"p":14584,"v":"9.0.5"}
目前開發本機提供測試接口: 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"}
不配置的時候直接調用,結果是404 (原因是接口xxxx/portal/home/pullRefresh還不存在,對於app來說調了一個不存在的接口)
charles做如下配置:
然后重啟app,查看接口請求情況,看到實際請求了我們轉發的172.31.0.158:8080接口,而不再請求域名XXX 接口,下面圖片能看到
至此,Map Remote 功能配置完成。
Map Local的使用場景,要驗證接口返回數據的各種場景。正常流程是配置系統配置數據,或者產品配置配置產品。Map Local可以輕易改變請求接口的返回數據。
以下面的接口為例:
{
"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.這個接口來源是athena,還在開發中,接口數據是寫死的,沒法改變。
2.即使 后台和接口都是好的,需要的數據都要在 athena 配置,每次配置生效,等緩存時間過期,都很耗費時間。
3.imageZipMd5 值athena 不能隨意配置,測試場景需要非法的 imageZipMd5 ,沒法通過配置實現。
這是正常的接口返回,現在要 successFlag 改成false 或者 imageZipMd5 改變,時間失效等等數據改變組合。
還是要上面的接口:
默認數據就是上面列出的,現在配置 Map Local;
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 Map To 鏈接到本地的 json.txt文件
重啟app 再次請求接口,接口返回數據 imageZipMd5 已經變成本地文件 json.txt的值。現在可以隨意修改 json.txt 里面的內容,覆蓋很多場景,節省測試的驗證時間。
至此,Map Local 功能配置完成。