Mock Server利器
Moco介紹
在開發過程中,經常會使用到一些http網路介面,而這部分功能通常是由第三方開發團隊或者是後端同事進行開發的,在我們開發時不能給我們提供服務,更有甚者,要整合的服務在開發時還不存在。這為我們的聯調和測試造成了麻煩,常見的解決方案是搭建一個web server。
為什麼要開發Moco這個框架?
具體到模擬服務上,處理的手法也是各種各樣,因為服務以HTTP整合居多,無論是Web Service,還是REST,所以,一種典型的做法是,開發一個模擬服務,打成WAR包,部署到一個應用伺服器上。而我們知道,一旦牽扯到應用伺服器部署,就是非常耗時的,部署的時間量級通常是分鐘級的。而且,模擬伺服器通常不是一次性的工作,我們需要在開發過程中,反覆調整,這就進一步增加了維護一個模擬伺服器的成本。有的應用伺服器是非常消耗資源的,要用專門的機器來部署它。更進一步,如果機器資源有限,團隊就只能共享一臺機器,這樣,即便我為測試自己的部分做一個小的改動,很有可能因為得不到機器的使用權,而要等上幾天時間
Moco就是針對這樣一個特定的場景而生的。Moco是一個簡單搭建模擬伺服器的程式庫/工具,這個基於 Java 開發的開源專案已經在 Github 上獲得了不少的關注。該專案的簡介是這樣描述自己的:Moco 是一個簡單搭建 stub 的框架,主要用於測試和整合。
開發團隊只要根據自己的需要進行相應的配置,就會很方便得到一個模擬伺服器。而且,由於 Moco 本身的靈活性,其用途已經不再侷限於最初的整合測試,比如,Moco 可以用於移動開發,模擬尚未開發的服務;Moco 還可以用於前端開發,模擬一個完整的 Web 伺服器等等。
Moco本身支援API和獨立執行兩種方式。通過使用API,開發人員可以在JUnit、JBehave等測試測試框架裡使用Moco,極大程度地降低了整合點測試的複雜度
Moco可以提供以下服務:
- HTTP APIs
- Socket APIs
- REST API
Moco原理簡介:Moco會根據一些配置,啟動一個真正的HTTP服務(會監聽本地的某個埠)。當發起請求滿足一個條件時,它就給回覆一個應答。Moco的底層沒有依賴於像Servlet這樣的重型框架,而是基於一個叫Netty網路應用框架直接編寫的,這樣一來,繞過了複雜的應用伺服器,所以,它的速度是極快的
Moco獨立執行所需環境
Moco獨立執行時所需準備的有:
- Java執行環境
- moco-runner-0.11.0-standalone.jar
如何執行Moco
啟動http服務
Moco的執行非常簡單,只需要一行命令即可
如在命令列中執行:java -jar <path-to-moco-runner> http -p <monitor-port> -c < configuration -file>
<path-to-moco-runner>
:moco-runner-0.11.0-standalone.jar包的路徑<monitor-port>
:http服務監聽的埠<configuration -file>
:配置檔案路徑
這就在本地啟動了一個http server,其中監聽埠是12345,配置檔案是MocoApi.json。只要在本機發起一個請求,如:http://localhost:12345,該請求就會被這個web server handle
如果別的機子想訪問這個服務,只要把localhost替換成本機IP即可
啟動https服務
啟動https服務,需要先生成證書,並用如下命令啟動服務:地方多發呆發地方的地方的地方的發呆發:java -jar <path-to-moco-runner> https -p <monitor-port> -c < configuration -file> --https <path-to-cert.jks > --cert mocohttps --keystore mocohttps
<path-to-moco-runner>
:moco-runner-0.11.0-standalone.jar包的路徑<monitor-port>
:http服務監聽的埠<configuration -file>
:配置檔案路徑<path-to-cert.jks>
:證書路徑
這就在本地啟動了一個http server,其中監聽埠是12346,配置檔案是MocoApi.json,證書檔案是test.cer
Moco HTTP(s) API配置
啟動服務之後,必然會根據需求stub出各種各樣介面反饋,我們會把這個配置放在一個json檔案中,啟動Moco的時候,需要指定使用的配置檔案路徑,這樣配置就可以生效了。Moco服務可以檢測到配置檔案的變更,假如你修改了配置檔案,不需要重新啟動Moco,服務照樣可以生效。更詳細的配置介紹請檢視:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
配置檔案的工作原理大致如下:
如何在配置檔案添加註釋
json不支援註釋,想要添加註釋的話,可以在description欄位中加入描述
約定請求Body
約定介面的uri
約定請求引數
約定請求方法
約定HTTP版本
約定請求頭部
約定cookie
約定請求form
表單可以新增多項,多項的時候,必須全部匹配,接口才算匹配成功
約定以指定xml作為請求body
用xpath對請求進行匹配
約定以指定json作為請求body
用正則表示式對請求進行匹配
匹配操作
設定Response content
設定Response 狀態碼
設定Response HTTP版本
設定Response 頭部
設定重定向
設定cookie
掛載檔案
template的用法
Moco內建了一些變數,在response中可以使用這些變數,讓反饋更加智慧,以下列舉了常用的變數
- req.version
- req.version
- req.method
- req.content
- req.headers
- req.queries
- req.forms
- req.cookies
使用舉例如下:
Moco在單元測試中使用
Moco除了可以單獨執行外,還可以在單元測試中執行,測試過程中,Moco會啟動一個web server來處理我們的請求
執行在單元測試中的moco server也可以選擇載入json配置檔案
通過stub後臺,便可對http請求進行測試了
Moco的不足
Moco的使用很簡單,配置也很方便,目前更是提供了http、rest、socket服務。但是也僅僅是能stub出介面,模擬出簡單的場景。如果接收到請求後需要做一些處理,如需查詢資料庫、進行運算、或者一些複雜的操作,就無能為力了。所以是否選用Moco,就取決於開發者是否只是需要一個簡單的模擬伺服器。
相關推薦
Mock Server利器
Moco介紹 在開發過程中,經常會使用到一些http網路介面,而這部分功能通常是由第三方開發團隊或者是後端同事進行開發的,在我們開發時不能給我們提供服務,更有甚者,要整合的服務在開發時還不存在。這為我們的聯調和測試造成了麻煩,常見的解決方案是搭建
搭建mock-server
安裝mockjs和express npm install mockjs express --save 新建api.json api.josn主要是放請求的json資料,有新增的請求,只需要在api.json新增即可。 { "login": [{ "url": "/login",
如何優雅的使用Mock Server
事出有因 昨天跟同事討論我們在用的rap2(一個集介面編寫和mock server的開源專案)和剛上線了一個easy-mock的server,到底哪個好用。 我們主要討論的點有個兩個: 介面的一致性、 編碼的無侵入性。 背景 自從前後端分離後,完成前後端的分工之後,大家就可以各司其職
走進Java介面測試之簡單快速的Mock Server Moco
文章目錄 引言 簡介 原理 使用 約定請求 URI 約定請求 Queries 約定請求 Get 方法 約定請求 Post 方法 約定請求 Headers 約定請求
Docker 快速搭建 mock-server
專案目前選型是前後端分離開發,其中前端使用 AntDesign pro。 根據和一線工程師溝通,引入mock技術搭建 json-server,可以快速模擬呼叫後端介面,實現增刪查改以及複雜的業務邏輯。不用等後端開發完畢,配合 rap2 介面管理系統,前後端統一約束,而且前端不用手工造數:可以從配置好正則的介
Building an Excellent Mock Server in Swift using Vapor
What is a Mock Server?Before explaining what a mock server is, we’ll start with what a mock is and why you might use one. I’ll also avoid delving into the
介面自動化測試:mock server之Moco工具
什麼是mock server mock:英文可以翻譯為模仿的,mock server是我們用來解除依賴(耦合),假裝實現的技術,比如說,前端需要使用某些api進行除錯,但是服務端並沒有開發完成這些api,那麼前端的工作就被服務端阻塞了,那麼就可以使用mo
介面測試 mock server 工具moco
看過乙醇分享的介面測試,自己練習了moco,這裡呢,吧一些練習的筆記坐下記錄,方便自己查閱。 開源地址https://github.com/dreamhead/moco , 到QuickStart 進行下載。 下載就是一個jar包, 新建資料夾,然後看著官
開源mock server系統
小強軟體測試,因為不是天生麗質,所以必須天生勵志。 效能、python自動化班長期招生,諮詢QQ:2083503238 官網:http://xqtesting.sxl.cn QQ群:229390571 1、Moco 是什麼 Moco是一個簡單搭建模擬伺服器的程式
python筆記25-mock-server之moco
version 寫入 遇到的問題 dal 官方 image 源碼 data- ket mock除了用在單元測試過程中,還有一個用途,當前端開發在開發頁面的時候,需要服務端提供API接口此時服務端沒開發完成,或者說沒搭建測試環境,這個時候前端開發會自己mock一個api服
Python接口測試實戰5(下) - RESTful、Web Service及Mock Server
韓老師 數據庫 word category uri 工具 根節點 管理 image 如有任何學習問題,可以添加作者微信:lockingfree 課程目錄 Python接口測試實戰1(上)- 接口測試理論 Python接口測試實戰1(下)- 接口測試工具的使用 Pytho
使用Swagger生成JAVA Mock Server(Springboot)程式碼
Swagger為我們提供了非常多的工具,其中最強的還要算這個程式碼的生成工具。在前後端分離的大環境下,前後端之間訂立的介面顯得尤為重要,介面在訂立之後變動的可能性已經很小,這就要求我們提前去設計介面,也就是我們為前端提供的API。 但是我們發現,在開發過程中訂立的介面壽命
利用eolinker實現api介面mock測試(mock server)
前後端分離或者是進行單元測試的時候,必須要用mock api替換掉第三方呼叫或者是實際的API,eolinker提供了非常全面的mock api支援,其他那些需要安裝配置的mock server就不說了,有現成的幹嘛還要自己搭。 Api資訊如下,url裡面可以把根路徑去掉
Mock Server運用
central 編寫 聯調 src 模擬 一個 gin 公司 成了 Mock Server介紹 什麽是mock ? 我在去年的時候介紹一篇幅 python mock的基本使用,http://www.cnblogs.com/fnng/p/5648247.html
Mock Server的搭建
一、概述 我們系統與第三方開票系統有互動,場景是我們系統請求第三方開票系統,第三方開票系統根據我們的請求資料,生成開票資訊然後返回發票號或異常資訊,我們根據返回的資訊做對應的處理。因為配合上存在一些障礙,因此想要搭建個mock server,先驗證己方系統的正確性。 什麼是Mock Server ?
搭建一個低配版的Mock Server
> mock翻譯過來是模仿的意思,Server是伺服器。粗暴點直譯就是模仿伺服器。 ## 寫在前面 通過閱讀本文,你將對Mock的使用有一定的瞭解,對前後端分離的概念有了更深一步的認識,對Koa的使用有一定的瞭解。本文先從背景出發去丟擲“我們為什麼要用Mock?”的靈魂拷問,緊接著我們通過Mock在
程式猿推送利器:使用Python+Server醬打造微信通知推送利器
你是否經歷過伺服器掛掉卻渾然不知的彷徨?你是否感受過服務停止很久後才發現事情的嚴重的感覺?是的,你急需一款輕量級的推送通知系統! Server醬正是這麼一款程式猿的好幫手,她通過提供一個超輕量級的API介面就可以讓你的訊息推送到你的微信上,達到以下效果: 那麼如何實現訊息
Vue用json-server+mockjs來Mock資料
環境配置 這裡需要用到json-server和mockjs模擬外掛。 json-server: https://github.com/typicode/json-server mockjs: http://mockjs.com/ 安裝 npm in
HTTP Server Mock 從手工到平臺的演變
大家都知道,不管是 Web 系統、還是移動 APP,各自在與內部、外部系統之間進行資料互動時,大多數情況下都是依賴介面。在基於介面約定開發的模式下,依賴介面的產出時間如果延遲,將直接影響了整個研發除錯的效率;如果不能對介面進行及早測試,那發現問題的時間就要被推遲了。既然雙方約定了介面格式,為何不按照這個規
HTTP Server Mock 從手工到平臺的演變(二)
大家都知道,不管是 Web 系統、還是移動 APP,各自在與內部、外部系統之間進行資料互動時,大多數情況下都是依賴介面。在基於介面約定開發的模式下,依賴介面的產出時間如果延遲,將直接影響了整個研發除錯的效率;如果不能對介面進行及早測試,那發現問題的時間就要被推遲了。既然雙方約定了介面格式,為何不按照這個規