HTTP/gRPC模擬工具-Camouflage

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

通過(guò)使用config.yml文件初始化Camouflage服務(wù)器來(lái)啟動(dòng)它。
輸入命令:
camouflage --config config.yml打開(kāi)瀏覽器訪問(wèn)http://localhost:8080/
如同所示,Camouflage服務(wù)起來(lái)了。

創(chuàng)建第一個(gè)mock。
config.yml文件里,已經(jīng)定義了mock目錄所在項(xiàng)目的路徑。

在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"
}瀏覽器訪問(wèn)mock地址:
http://localhost:8080/demo
如圖所示,mock訪問(wèn)成功。
































