一、前言
之前一直聽mock,也大致了解mock的作用,但沒有具體去了解過如何用工具或框架實現mock,以及也沒有考慮過落實mock,因為在實際的工作中,很少會考慮用mock。最近在學java,剛好了解到moco框架是用于mock的,湊巧就實踐一下基本的運用吧。
二、Mock介紹
Mock技術又叫測試樁、擋板,就是在測試過程中,對于某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來創建以便測試的測試方法。 在具體的測試過程中,我們經常會碰到需要模擬數據或者接口的情況,因為環境問題或者系統復雜度的問題,我們需要使用 Mock 方式進行數據的模擬。
1、測試行業中的應用場景
1.某個新需求,開發未完成,測試人員使用mock技術,把新增的業務使用mock技術模擬出來,進行初步測試,等開發人員開發完成,再進行真實環境測試。
2.在項目中,經常會用到很多第三方接口,比如充值、防沉迷驗證。第三方接口返回效率低、環境搭建麻煩,可以使用mock技術,先測試整體流程。
2、怎么用mock?
1.測試團隊開發--技術要求高,使用django、flask等
2.使用現成工具 ?postman、fiddler等
3.不寫代碼,使用框架(moco)去創建mock ? moco.jar+xxx.json ?(簡單)
三、Moco框架介紹
moco可以理解為一個mock的工具框架,一個簡單搭建模擬服務器的工具,下載下來是一個jar包。
特點:
1.只需要簡單地配置request、response等即可滿足需求
2.支持http、https、socket協議,非常靈活
3.支持在request中設置Headers、Cookies、StatusCode等
4.支持get、post、put、delete等請求方式
5.無需環境配置,有Java環境即可
6.支持熱更新,修改配置后,立即生效,只需要維護接口即可
7.支持多種數據格式,如json、text、xml、file等
8.可與其他工具集成,如Junit、Maven等
四、Moco工作原理
五、Moco框架運行
1、環境說明
需先安裝JDK并配置環境變量
2、Moco下載
下載地址:https://github.com/dreamhead/moco
3、Moco目錄結構
在本地新建一個文件夾,將下載好的jar包放入文件夾,然后新建json配置文件,以下是以自己電腦為例截圖:
4、Json說明
1)moco-get.json
[{"description": "一個簡單的get請求","request": {"method": "get","uri": "/login"},"response": {"text": "我是login get method","headers":{"Content-Type":"text/html;charset=utf-8"}}},{"description": "帶參數的get請求,p1和p2是兩個參數","request": {"method": "get","uri": "/reg","queries": {"p1": "v1","p2": "v2"}},"response": {"text": "帶參數的get請求","headers":{"Content-Type":"text/html;charset=utf-8"}}},{"description": "get請求返回json類型數據","request": {"method": "get","uri": "/login_json"},"response": {"json": {"key":"value","請求方式是get":"響應結果為json類型"},"headers": {"Content-Type": "application/json;charset=utf-8"}}}
]
2)moco-post.json
[{"description": "定義請求方式,通過method參數定義","request": {"uri": "/index","method": "post"},"response": {"text": "hello world"}},{"description": "定義請求參數,通過queries參數定義","request": {"uri": "/index","method": "get","queries": {"area": "010","kw": "hello"}},"response": {"text": "hello world"}},
{"description": "定義請求頭,通過headers參數定義","request": {"uri": "/login","method": "post","headers": {"area": "010"}},"response": {"text": "hello world"}},
{"description": "定義表單請求體,通過forms參數定義","request": {"uri": "/login","method": "post","forms": {"username": "tom","password": "123456"}},"response": {"text": "login success"}},
{"description": "定義JSON請求體,通過json參數定義","request": {"uri": "/login","method": "post","headers": {"Content-Type": "application/json"},"json": {"username": "tom","password": "123456"}},"response": {"text": "hello world66666"}},
{"description": "定義HTTP響應狀態碼,通過status參數定義","request": {"uri": "/index2"},"response": {"status": 500,"text": "error"}},{"description": "定義JSON響應數據,通過json參數定義","request": {"uri": "/login"},"response": {"headers": {"Content-Type": "application/json;charset=UTF-8"},"json": {"code": "10000","msg": "操作成功","data": {"uid": 2,"token": "xxx"}}}}
]
3)moco-redirect.json
{"description":"重定向到指定網站","request":{"method":"get","uri":"/login_redirect"},"redirectTo":"https://www.baidu.com"}
字段說明:
description:程序不會識別,是寫給我們自己看的;
request:請求,里面的 uri 是我們訪問應用的時候拼接在端口后面的路徑;
response:響應內容;
其他說明:post中
headers:請求頭,根據是form還是json格式的請求來填寫
from格式:"content-type": "application/x-www-form-urlencoded"
json格式:"content-type": "application/json"
請求參數格式以及數據,對應headers的content-type
form格式關鍵字為forms
json格式關鍵字為json
5、Moco啟動服務
有了jar包和json數據,就可以啟動moco了
打開cmd,切到jar包所在的路徑后,執行指令:java -jar jar包的路徑 http -p 運行端口 -c 要運行的文件路徑
以自己電腦為例,啟動成功后效果如下:java -jar moco-runner-1.3.0-standalone.jar http -p 8899 -c moco-get.json
6、驗證
1)打開瀏覽器,輸入地址訪問:
http://localhost:8899/login
http://localhost:8899/reg?p1=v1&p2=v2?
http://localhost:8899/login_json?
2)post請求的不能直接通過地址訪問,可以用接口工具訪問
這里就不演示,類似訪問正常接口
7、拓展-Moco引入配置文件
moco支持在配置文件中引入其他配置文件,這樣可以分服務/模塊定義配置文件,便于對配置文件的管理。
實現步驟:
1)分服務/模塊定義配置文件,如分別定義moco-get.json、moco-post.json、moco-redirect.json文件
2)定義啟動配置文件,如config.json并引入其他配置文件
3)啟動服務:java -jar moco-runner-1.3.0-standalone.jar http -p 8899 -g config.json
?注意:通過
-g config.json
指定配置文件
最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!
軟件測試面試文檔
我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有字節大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。