1. 程式人生 > 其它 >關於使用charles進行mock步驟

關於使用charles進行mock步驟

1.應用場景: 1.1 測試環境中,可能存在部分依賴外部系統的http介面,因為外部系統未部署或服務不可用等其他原因,導致介面無法正常響應(特別是qa1環境); 而平時的測試主要還是以介面上的功能測試為主,所以需要自行mock介面。這裡可以利用charles抓包工具來實現。 2.環境準備: 2.1 下載charles,並且配置好代理 這一步比較簡單,經常使用 抓包工具的應該都熟悉,可以參考以下文章 https://www.jianshu.com/p/187afc1049ca 3.實踐步驟: 3.1 charles 提供了 map local 和 map remote 兩種方式來實現mock(PS : 個人覺得比對某一介面打斷點,然後修改返回引數 這種騷操作好用) 對於 map local 來說,其實是將構造好的返回結果,以json檔案的形式存在本地,然後charles會自行構造響應頭,返回資料。這種方式實現成本比較低,但是可能靈活性不是很高; 而 map remote,則是需要有一個可用的mock server,將響應頭和返回結果都構造好,然後直接返回。這種方式,如果自己寫程式碼實現,成本會比較高,但是靈活性也相對較高,能適用更多場景。 3.2 下面以具體例子,演示一下 map local 的使用: 開啟charles,讓介面請求都中轉到charles,先右鍵介面,在彈窗中按以下步驟配置:

 

 

 

PS:這一步需要先將構造好的介面返回引數,以json檔案格式儲存;(一個小技巧:可以在其他介面能正常響應的環境,複製一份正常的響應資料,然後做對應的修改) 例子

 

 

這一步配置完之後,其實已經成功了一半; 重新回到介面,點選對應的功能,觸發介面請求,大概率會看到介面還是報錯的,但是charles上已經是正常返回資料的了; 開啟F12 的console介面,可以看到報錯提示,這裡出現的問題其實是跨域問題

 

跨域問題的解決: 點選Charles的Tools選單,點選 Rewrite Settings ,在彈窗中配置重寫規則,針對指定的介面,重寫響應頭

 

 

 

 

 

配置完成之後,點選OK,再重新回到介面觸發請求,會發現介面已經正常返回Mock的資料了 到這裡,利用map local 做介面 mock 就已經成功了,可以解決大部分使用場景,缺點在於返回結果是放在本地的檔案中,可能需要每次都去修改一下;   3.3 使用map remote 配置的方式和map local差不多,不進一步展開。使用這個功能的關鍵點在於,需要有一個可用的mock server,並且能自行構造響應頭,以解決跨域問題; 如果使用map remote的話,個人更傾向於自己搭一個python web 應用來作為 mock server,可以靈活定製響應結果。 如何mock可以檢視:
https://www.cnblogs.com/yetangjian/p/15676966.html