https://cloud.tencent.com/developer/article/1759972?from=article.detail.1465591
一
Mock介紹
1
什麼是mock
mock
測試就是在測試過程中,對於某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來創建以便測試的測試方法。 在具體的測試過程中,我們經常會碰到需要模擬數據或者接口的情況,因爲環境問題或者系統複雜度的問題,我們需要使用 Mock 方式進行數據的模擬。
2
mock應用場景
- 對象信息難構建:在測試過程中,需要第三方接口返回特定的數據以符合特定的測試場景,這種情況往往需要跨條線的溝通協調測試數據,成本高,效率低;利用Mock可以自定義返回測試結果,支持手動構造依賴接口的返回值。
- 依賴的接口尚未開發完成:依賴接口性能參數無法保障。在對接口性能壓測的時候,需要下游接口及時返回數據,滿足上游接口的調用 頻度。在依賴接口多的情況下,如何減輕工作量?
- 異常場景(連接異常、超時異常等):當需要測試接口一些異常數據,接口正常情況是否無法提供異常數據的。那麼如何簡便地構造接口的異常數據?
3
mock優缺點分析
優點
:
- 團隊可以並行工作:有了Mock,前後端人員只需要定義好接口文檔就可以開始並行工作,互不影響,這樣的話,開發自測階段就可以及早開展,從而發現缺陷的時機也提前了,有利於整個產品質量以及進度的保證。
- 隔離系統:由於其他系統模塊出錯引起本模塊的測試錯誤,我們可以採用mock隔離,避免干預
- 測試覆蓋度:異常條件很複雜或者無法模擬,使用mock,這一切就都好辦了,想要什麼返回就模擬什麼返回,提高測試覆蓋度。
缺點
:覆蓋率高不代表沒有問題,測試過程中如果大量使用Mock,mock測試的場景失去了真實性,可能會導致在後續的系統性測試時才發現bug,使得缺陷發現的較晚,可能會造成後續修復成本更大。
建議
:mock接口只能主流程聯調/ 異常返回測試,不要過分依賴mock接口進行測試。
4
接口mock工具介紹
01 Mockserver
github地址:https://github.com/jamesdbloom/mockserver
特點:
- 能夠mock HTTP或者HTTPS 的server;
- 當一個請求匹配 expectation時能夠返回一個mock response;
- 當一個請求匹配 expectation時能夠forward 一個請求;
- 當一個請求匹配 expectation時能夠執行一個回調(callback),允許動態地創 建response;
- 支持Request驗證。
02 RAP
github地址:https://github.com/thx/RAP
RAP是阿里團隊出的一款接口管理工具,幫助開發人員有效的管理接口文檔。包括阿里集團在內的三百五十多個企業都在使用RAP管理重要的接口文檔。
- Web接口管理工具,接口自動化,MOCK數據自動生成,自動化測試;
- 能夠通過分析接口結構自動生成Mock數據、校驗真實接口的正確性;
- 阿里產品,功能完善、結合了文檔、Mock.js、可視化、Rest、接口過渡、文檔修改提醒、支持本地部署。
03 Yapi
github地址:https://github.com/YMFE/yapi
YApi是去哪兒網移動架構組開發的一個開源項目,YApi的 Mock 功能可以根據用戶的輸入接口信息如協議、URL、接口名、請求頭、請求參數、返回數據、生成 Mock 接口,這些接口會自動生成模擬數據,創建者可以自由構造需要的數據。mock模擬數據基於mock.js。
Mock.js 是一款模擬數據生成器,旨在幫助前端獨立於後端進行開發,幫助編寫單元測試。提供了以下模擬功能:
- 根據數據模板生成模擬數據;
- 模擬 Ajax 請求,生成並返回模擬數據;
- 基於 HTML 模板生成模擬數據。
04 Moco
github地址:https://github.com/dreamhead/moco
Moco 是一個簡單搭建 stub 的框架,主要用於測試和集成。Moco本身支持API和獨立運行兩種方式。通過使用API,開發人員可以在JUnit、JBehave等測試測試框架裏使用Moco,極大程度地降低了集成點測試的複雜度
Moco可以提供以下服務:
- 支持http、https、socket;
- 支持設置headers、cookies、statuscode;
- 支持GET、POST、PUT、DELETE請求;
- 只需JRE環境即可運行;
- 支持熱更新;
- 支持json、xml、text、file數據格式;
- 能與JUnit、Maven、Gradle集成。
05 Mock.js
github地址:https://github.com/nuysoft/Mock/tree/refactoring
特點:
- 根據數據模板生成整合後的數據;
- 對於Ajax請求提供request/response mocking。
本次主要介紹moco框架的使用。
二
moco框架介紹及運行
環境說明:
需先安裝JDK並配置環境變量。
1
moco下載
moco下載地址:
https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/
如下所示:
2
mock目錄結構
C:\moco-runner\
├─moco-runner-1.1.0-standalone.jar
└─moco.json
在本地新建moco-runner文件夾,將下載好的moco-runner-1.1.0-standalone.jar放入文件夾,然後新建moco.json配置文件。
moco.json內容如下:
[
{
"description": "這是我們的運行demo",
"request": {
"uri": "/demo"
},
"response": {
"text": "第一個moco框架demo"
}
}
]
字段說明:
- description:程序不會識別,是寫給我們自己看的;
- request:請求,裏面的 uri 是我們訪問應用的時候拼接在端口後面的路徑;
- response:響應內容;
3
moco啓動服務
啓動命令:
java -jar ./moco-runner-1.1.0-standalone.jar 協議類型 -p 端口號 -c json配置文件
①打開cmd命令行,切換到moco-runner目錄。
cd C:\moco-runner
②輸入命令,啓動服務:
java -jar ./moco-runner-1.1.0-standalone.jar http -p 8899 -c moco.json
啓動成功後,效果如下:
③打開瀏覽器,輸入:http://localhost:8899/demo,訪問頁面如下: