『居善地』接口測試 — 12、Moco框架介紹

1、Mock功能介紹

各個業務系統都會關聯多個三方系統接口調用,在測試過程中第三方業務存在不能及時提供接口調用,這時就需要用到我們的Mock服務了。

Mock的本質在於模擬三方業務接口的返回,來滿足自身的測試功能,快速完成測試任務。

2、Moco框架介紹

Moco框架是Mock概念中的一種實現。

Moco框架是一個簡單搭建模擬服務器的程序庫/工具,這個基於 Java 開發的開源項目。

Moco框架已經在 Github 上獲得了不少的關注,該項目的簡介是這樣描述自己的:

  • Moco 是一個簡單搭建 stub 的框架,主要用於測試和集成。
  • 這個框架的開發靈感來自 Mock 框架,如 MockitoPlayframework

為什麼要開發這個框架?

  • 用於基於HTTP協議的集成:web serviceREST等,在我們的項目開發中被廣泛應用。
  • 以前,我們每次都要往 JettyTomcat等應用服務器上部署一個新的 WAR。
  • 大家都知道,開發部署一個 WAR 的過程是很枯燥的,即使在嵌入式服務器上也是如此。而且,每次我們做一點改動,整個 WAR 都要重新組裝。
  • Moco框架的出現,正是為了解決這些問題。開發團隊只要根據自己的需要進行相應的配置,就會很方便得到一個模擬服務器。
  • 而且,由於 Moco框架本身的靈活性,其用途已經不再局限於最初的集成測試。
    比如:
    Moco 可以用於移動開發;
    模擬尚未開發的服務;
    Moco 還可以用於前端開發,模擬一個完整的 Web 服務器等等。

3、Moco框架在接口測試中的作用

一般接口文檔編寫完成後,測試人員需要提前進行接口測試用例的編寫,而這時接口開發工作可能還沒完成。

如果要等到開發人員完成接口的開發,再進行測試用例的編寫,這樣會降低測試開發的效率。

這時如果測試人員使用Moco框架搭建一個模擬服務器,就可以根據接口文檔,自己模擬出接口的調用並返回結果。

在用例設計完成後,即使接口開發工作還未完成,也可以立即進行接口測試用例的執行。並且在這個過程中可以修改、補充測試用例。

在接口開發完成以後,只需要簡單的切換服務器地址,就可以測試所有的開發人員實現的接口了。這樣可以節省很多的測試時間,減少項目開發的周期。

Moco框架支持HTTP協議,採用熱部署,修改配置後,立刻生效,無需重啟服務。

Moco框架接口測試中的作用:方法隔離,服務解耦。即可並行又可驅動。

4、Moco框架的優點

  1. 只需要簡單的配置RequestResponse等即可滿足要求,支持HTTP、HTTPS、SCOKET。可以說是非常的靈活性。
  2. 支持在Request中設置Headers , Cookies , StatusCode等。
  3. 對GET、POST、PUT、DELETE等請求方式均支持,很適合web開發。
  4. 無需環境配置,有Java環境即可。
  5. 修改配置後,立刻生效。只需要維護接口,也就是契約即可。
  6. 對可能用到的數據格式都支持,如jsontextxmlfile等。
  7. 還能與其他工具集成,如JunitMavenGradle等。

5、Moco框架的下載與啟動

Moco框架文檔地址://github.com/dreamhead/moco/blob/master/moco-doc/apis.md

(1)Moco框架的下載

Github下載地址://github.com/dreamhead/moco(這裡下載的是源碼,不是jar包)

Moco框架Jar包下載地址://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/

如下圖所示:

image

得到moco-runner-0.11.0-standalone.jar文件。

(2)Moco框架的啟動

  1. 條件:
    因為Moco框架是一個jar包,所以需要Java環境才能啟動。
    即:配置好Java環境。
  2. 啟動:
    把Moco框架Jar包和Json文件放入同一個文件夾中,
    命令行終端里進入到Json文件所在的目錄,執行啟用命令,如下:
    java -jar ./moco-runner-0.11.0-standalone.jar http -p 12306 -c foo.json即可。
    說明:
    ./moco-runner-0.11.0-standalone.jar為Moco工具所在目錄。
    http:表示服務器協議,server type: http, https, socket
    -p:表示端口號。
    -c:表示一個json文件。接口所有的信息都配置在該json文件中。

提示:Moco工具路徑和json文件路徑都可以寫相對路徑和絕對路徑。