『居善地』接口測試 — 12、Moco框架介紹
1、Mock功能介紹
各個業務系統都會關聯多個三方系統接口調用,在測試過程中第三方業務存在不能及時提供接口調用,這時就需要用到我們的Mock服務了。
Mock的本質在於模擬三方業務接口的返回,來滿足自身的測試功能,快速完成測試任務。
2、Moco框架介紹
Moco框架是Mock概念中的一種實現。
Moco框架是一個簡單搭建模擬服務器的程序庫/工具,這個基於 Java 開發的開源項目。
Moco框架已經在 Github 上獲得了不少的關注,該項目的簡介是這樣描述自己的:
- Moco 是一個簡單搭建 stub 的框架,主要用於測試和集成。
- 這個框架的開發靈感來自 Mock 框架,如
Mockito
和Playframework
。
為什麼要開發這個框架?
- 用於基於HTTP協議的集成:
web service
、REST
等,在我們的項目開發中被廣泛應用。 - 以前,我們每次都要往
Jetty
或Tomcat
等應用服務器上部署一個新的 WAR。 - 大家都知道,開發部署一個 WAR 的過程是很枯燥的,即使在嵌入式服務器上也是如此。而且,每次我們做一點改動,整個 WAR 都要重新組裝。
- Moco框架的出現,正是為了解決這些問題。開發團隊只要根據自己的需要進行相應的配置,就會很方便得到一個模擬服務器。
- 而且,由於 Moco框架本身的靈活性,其用途已經不再局限於最初的集成測試。
比如:
Moco 可以用於移動開發;
模擬尚未開發的服務;
Moco 還可以用於前端開發,模擬一個完整的 Web 服務器等等。
3、Moco框架在接口測試中的作用
一般接口文檔編寫完成後,測試人員需要提前進行接口測試用例的編寫,而這時接口開發工作可能還沒完成。
如果要等到開發人員完成接口的開發,再進行測試用例的編寫,這樣會降低測試開發的效率。
這時如果測試人員使用Moco框架搭建一個模擬服務器,就可以根據接口文檔,自己模擬出接口的調用並返回結果。
在用例設計完成後,即使接口開發工作還未完成,也可以立即進行接口測試用例的執行。並且在這個過程中可以修改、補充測試用例。
在接口開發完成以後,只需要簡單的切換服務器地址,就可以測試所有的開發人員實現的接口了。這樣可以節省很多的測試時間,減少項目開發的周期。
Moco框架支持HTTP協議,採用熱部署,修改配置後,立刻生效,無需重啟服務。
Moco框架接口測試中的作用:方法隔離,服務解耦。即可並行又可驅動。
4、Moco框架的優點
- 只需要簡單的配置
Request
、Response
等即可滿足要求,支持HTTP、HTTPS、SCOKET。可以說是非常的靈活性。 - 支持在
Request
中設置Headers
,Cookies
,StatusCode
等。 - 對GET、POST、PUT、DELETE等請求方式均支持,很適合web開發。
- 無需環境配置,有Java環境即可。
- 修改配置後,立刻生效。只需要維護接口,也就是契約即可。
- 對可能用到的數據格式都支持,如
json
、text
、xml
、file
等。 - 還能與其他工具集成,如
Junit
、Maven
、Gradle
等。
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/
如下圖所示:
得到moco-runner-0.11.0-standalone.jar
文件。
(2)Moco框架的啟動
- 條件:
因為Moco框架是一個jar包,所以需要Java環境才能啟動。
即:配置好Java環境。 - 啟動:
把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文件路徑都可以寫相對路徑和絕對路徑。