mock介紹及moco框架搭建使用

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,訪問頁面如下:

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章