HTTP/gRPC模擬工具-Camouflage
1.前言
測試人員一般在什么場景下會使用mock?
總結(jié)有以下4種場景:
模擬外部依賴:當軟件系統(tǒng)與外部服務(wù)、數(shù)據(jù)庫或第三方 API 交互時,測試人員可以使用 mock 來模擬這些外部依賴,以避免依賴性問題影響測試結(jié)果。
未實現(xiàn)的功能:如果某些功能尚未實現(xiàn),但其他功能需要進行測試,測試人員可以使用 mock 來代替這些未實現(xiàn)的部分。
隔離測試單元:在單元測試中,有時需要隔離待測試的單元與其余代碼邏輯,此時可以使用 mock 對其他部分進行模擬,保證測試的準確性和獨立性。
提高測試效率:使用 mock 可以幫助測試人員更快地編寫和運行測試用例,因為它們可以減少對外部資源的依賴,加快測試執(zhí)行速度。
總的來說,mock 的使用可以幫助測試人員更好地控制測試環(huán)境,提高測試效率,同時降低測試的成本和復雜度。
本文將介紹一款可模擬HTTP/HTTPS等協(xié)議的mock工具 - Camouflage
2.簡介
Camouflage 是一個用于 HTTP、gRPC、Websockets 和 Thrift 協(xié)議的后端模擬工具,它可以幫助你在缺少一個或多個微服務(wù)/API的情況下,獨立進行前端原型設(shè)計、單元測試、功能測試和性能測試等。
Camouflage 基于文件的端點配置進行工作,這意味著你可以通過簡單地創(chuàng)建一組目錄和一個模擬文件來創(chuàng)建一個模擬端點,當調(diào)用該端點時,使用這些文件生成所需的響應。
功能特性:
- 基于文件的模擬,支持HTTP、HTTPS、HTTP2、gRPC、Thrift和websockets
- 無需編寫任何代碼的動態(tài)/真實響應
- 靈活地對你的回答進行部分或全部編碼
- 基于請求參數(shù)的條件響應
- 內(nèi)置緩存-內(nèi)存和redis
- 能夠使用外部數(shù)據(jù)獲取和調(diào)節(jié)響應,當前支持的數(shù)據(jù)源是CSV和postgres
- 延遲模擬
- 內(nèi)置監(jiān)控
- 內(nèi)置備份和恢復機制
- 快速啟動 camouflage init 和 camouflage restore 模塊
- 可在獨立VMs、Docker和Kubernetes上部署
- 附帶文件資源管理器UI,允許修改遠程托管的模擬文件
- 使用OpenApi架構(gòu)驗證請求和響應
官方網(wǎng)址:
https://testinggospels.github.io/camouflage/
3.安裝
Camouflage是一個NPM包,安裝之前,先確保是否已安裝NodeJS(>v14),如沒有,則先安裝NodeJS。
安裝Camouflage。
npm install -g camouflage-server
安裝完成后,輸入camouflage –version,顯示版本號以驗證安裝是否成功。
4.快速上手
初始化Camouflage項目。
在系統(tǒng)中的任何位置創(chuàng)建一個空目錄,并在終端/命令行中導航到該目錄下。
例如創(chuàng)建 testDemo 目錄,路徑為C:\testDemo
對于npm和yarn,執(zhí)行命令 camouflage init
或使用 npx degit camouflagejs/init myproject 來初始化Camouflage項目。
初始化完成后的目錄結(jié)構(gòu):
通過使用config.yml文件初始化Camouflage服務(wù)器來啟動它。
輸入命令:
camouflage --config config.yml
打開瀏覽器訪問http://localhost:8080/
如同所示,Camouflage服務(wù)起來了。
創(chuàng)建第一個mock。
config.yml文件里,已經(jīng)定義了mock目錄所在項目的路徑。
在mocks目錄里創(chuàng)建demo目錄。
創(chuàng)建GET.mock文件。
文件內(nèi)容:
HTTP/1.1 200 OK
X-Custom-Header: Custom-Value
Content-Type: application/json
{
"username": "admin",
"password": "123456"
}
瀏覽器訪問mock地址:
http://localhost:8080/demo
如圖所示,mock訪問成功。