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框架文件地址:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
(1)Moco框架的下載
Github下載地址:https://github.com/dreamhead/moco(這裡下載的是原始碼,不是jar包)
Moco框架Jar包下載地址:https://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檔案路徑都可以寫相對路徑和絕對路徑。