1. 程式人生 > >Mock Server利器

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>:配置檔案路徑

image_1aukc7jbn1rh51p2ma761dd5v4j9.png-52.4kB

這就在本地啟動了一個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>:證書路徑

image_1aukcamtmf2v14d14pi1r5ria6m.png-46.1kB

這就在本地啟動了一個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

配置檔案的工作原理大致如下:
image_1aukcdkko1htkpba1hjt14srit213.png-53.4kB

如何在配置檔案添加註釋

json不支援註釋,想要添加註釋的話,可以在description欄位中加入描述
image_1aukces4c1bld1ilv120vtc713rk1g.png-21.5kB

約定請求Body

image_1aukcg2219uc4a89v2eia169i1t.png-63.5kB

約定介面的uri

image_1aukcgr1h1pvg1iqede15mtjtv2a.png-35.2kB

約定請求引數

image_1aukcheemo95pmp1q351n0vjq12n.png-40.6kB

約定請求方法

image_1aukci164cq717av19nc1cp0b0q34.png-32.7kB

約定HTTP版本

image_1aukcin2p1cnoenf1nfe1hn895u3h.png-38.2kB

約定請求頭部

image_1aukp23qh1io01g611k67l49ie9.png-47.6kB

約定cookie

image_1aukp2ppph2215lv4mp165n1begm.png-45.5kB

約定請求form

image_1aukp3eip1unv1s971l1s8ke1pr713.png-47.1kB

表單可以新增多項,多項的時候,必須全部匹配,接口才算匹配成功

約定以指定xml作為請求body

image_1aukp4l8rblj9p712cq13au1nlc1g.png-69.9kB

用xpath對請求進行匹配

image_1aukp54ud10dcbhi1a981sii1j1t.png-47.8kB

約定以指定json作為請求body

image_1aukp62mg1c1p1ilpa371fg71okd2a.png-118.5kB

用正則表示式對請求進行匹配

image_1aukp6kjk1cgktok1ksl3pl11ra2n.png-50.1kB

匹配操作

image_1aukp79rk6stah19u7138o10df34.png-132kB

設定Response content

image_1aukpa21f1nt21hrq15iv5111lcc3h.png-71kB

設定Response 狀態碼

image_1aukpam111jae1kj31trj1vqau2d3u.png-50.7kB

設定Response HTTP版本

image_1aukpb88b17f119i1oatsdi1pti4b.png-58.3kB

設定Response 頭部

image_1aukpboqh15l6ib31gvrcjo1dbq4o.png-45.9kB

設定重定向

image_1aukpca591qrht381uv31cvt43g55.png-39.9kB

設定cookie

image_1aukpcqun1tq911n314fv1o8r12hi5i.png-42.1kB

掛載檔案

image_1aukpdacf1sq3p241s14qbqdnb5v.png-34.4kB

template的用法

Moco內建了一些變數,在response中可以使用這些變數,讓反饋更加智慧,以下列舉了常用的變數

  • req.version
  • req.version
  • req.method
  • req.content
  • req.headers
  • req.queries
  • req.forms
  • req.cookies

使用舉例如下:
image_1aukpfh4037cdgjsdoevg10396c.png-114.1kB

Moco在單元測試中使用

Moco除了可以單獨執行外,還可以在單元測試中執行,測試過程中,Moco會啟動一個web server來處理我們的請求

image_1aukpgl0jlqs7fn10ha1e5n1kmu6p.png-156.2kB

執行在單元測試中的moco server也可以選擇載入json配置檔案
image_1aukph7s4vpdjegi1fkp1jfn76.png-169.7kB

通過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,各自在與內部、外部系統之間進行資料互動時,大多數情況下都是依賴介面。在基於介面約定開發的模式下,依賴介面的產出時間如果延遲,將直接影響了整個研發除錯的效率;如果不能對介面進行及早測試,那發現問題的時間就要被推遲了。既然雙方約定了介面格式,為何不按照這個規