Moco框架的搭建使用

一、前言
  之前一直聽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指定配置文件

最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!

軟件測試面試文檔

我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有字節大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210712.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210712.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

城市基礎設施智慧路燈改造的特點

智慧城市建設穩步有序推進。作為智慧城市的基礎設施,智能照明是智慧城市的重要組成部分,而叁仟智慧路燈是智慧城市理念下的新產品。隨著物聯網和智能控制技術的飛速發展,路燈被賦予了新的任務和角色。除了使道路照明智能化和節能化外&#xf…

安全掃描五項簡介

目錄 安掃五項 1.代碼檢測 2.主機基線 nginx合規檢查 麒麟基線 3.WEB掃描 4.滲透測試 用戶枚舉漏洞 漏洞描述 修復建議 點擊劫持漏洞 漏洞描述 修復建議 XSS漏洞 漏洞描述 修復建議 3.主機漏洞 超高危漏洞 高危漏洞 中危漏洞 低危漏洞 信息漏洞 參考信息…

用電商API接口獲取拼多多的商品詳情數據

pinduoduo.item_get_app_pro-根據ID取商品詳情原數據 公共參數 API請求地址 名稱類型必須描述keyString是調用key(必須以GET方式拼接在URL中)secretString是調用密鑰api_nameString是API接口名稱(包括在請求地址中)[item_searc…

一步一步寫線程之一簡單的開始

一、多線程 多線程不管是在前面的文章分析中還是在網上還是大書籍上,學習C/C多線程編程是無法繞過的,即使使用別人封裝好的框架,包括使用STL的一些庫,如果僅僅是簡單的應用,可能也就過去了。不過,稍微復雜…

VBA_MF系列技術資料1-237

MF系列VBA技術資料 為了讓廣大學員在VBA編程中有切實可行的思路及有效的提高自己的編程技巧,我參考大量的資料,并結合自己的經驗總結了這份MF系列VBA技術綜合資料,而且開放源碼(MF04除外),其中MF01-04屬于定…

[Linux] 用LNMP網站框架搭建論壇

一、nginx在其中工作原理 原理: php-fpm.conf是控制php-fpm守護進程 它是php.ini是一個php解析器 工作過程: 1.當客戶端通過域名請求訪問時,Nginx會找到對應的虛擬主機 2. Nginx將確定請求。 對于靜態請求,Nginx會自行處理…

結構體和位段

結構體: C語言中,我們之前使用的都是C語言中內置的類型,比如整形(int)、字符型(char)、單精度浮點型(float)等。但是我們知道,我們現實世界中,還…

聊聊spring.mvc.servlet.load-on-startup

序 本文主要研究一下spring.mvc.servlet.load-on-startup spring.mvc.servlet.load-on-startup org/springframework/boot/autoconfigure/web/servlet/WebMvcProperties.java ConfigurationProperties(prefix "spring.mvc") public class WebMvcProperties {//.…

json精講

本文介紹json的規范及javascript和java對數據的交換讀取 1. json介紹1.1 json簡介1.2為什么使用 JSON? 2. json規范2.1基礎規范2.2 key值為-字符串、數字、布爾值2.3 key值為對象Object2.4 key值為數組2.5 json本身就是一個數組 3.javascript操作json3.1 javascript…

WPF(Windows Presentation Foundation) 的 Menu控件

WPF(Windows Presentation Foundation)的 Menu 是一種用于創建菜單的控件。菜單通常位于應用程序窗口的頂部,并提供了一組命令或選項,用于導航到不同的功能區域、執行特定的操作或訪問特定的功能。 Menu 控件是 WPF 中的一個容器…

2、關于使用ajax驗證繞過(實例2)

ajax原理我上一篇有寫過,參考:1、關于前端js-ajax繞過-CSDN博客 一、實例環境: 為手機上的某一割韭菜app 二、目的: 實現繞過手機驗證碼,找回密碼 三、工具: bp代理 四、驗證步驟如下: …

ECU安全學習網站和書籍介紹

ECU安全是指關注和保護汽車電子控制單元(ECU)的安全性和防護措施。ECU是現代汽車中的關鍵組件,它負責監控和控制車輛各種系統的運行,如發動機、制動、轉向等。ECU安全的重要性在于防止惡意攻擊者操控或干擾車輛的操作。 ECU安全涉…

hive自定義函數及案例

一.自定義函數 1.Hive自帶了一些函數,比如:max/min等,但是數量有限,自己可以通過自定義UDF來方便的擴展。 2.當Hive提供的內置函數無法滿足你的業務處理需要時,此時就可以考慮使用用戶自定義函數。 3.根據用戶自定義…

GitHub為Rust語言添加了供應鏈安全工具

GitHub的供應鏈安全特性包括咨詢數據庫、Dependabot警報和依賴關系圖現在可以用于Rust Cargo文件。 為了幫助Rust開發人員發現和防止安全漏洞,GitHub已經為快速增長的Rust語言提供了供應鏈安全特性套件。 這些特性包括GitHub Advisory Database,它已經有…

構建外賣系統:使用Django框架

在當今數字化的時代,外賣系統的搭建不再是什么復雜的任務。通過使用Django框架,我們可以迅速建立一個強大、靈活且易于擴展的外賣系統。本文將演示如何使用Django構建一個簡單的外賣系統,并包含一些基本的技術代碼。 步驟一:安裝…

shell的條件測試

shell 的條件測試 概述 條件測試是 shell 編程中非常重要的一個概念,它允許我們根據某個條件是否滿足,來選擇執行相應的任務。 條件測試的語法 shell 中的條件測試語法如下: [ 條件表達式 ]如果條件表達式為真,則返回 0&…

CentOS 7.9--離線安裝python3.9.18+virtualenv-20.25.0

# 想在centos6.x 上安裝新版本的python,但是擔心在用系統的環境被破壞,所以需要安裝python虛擬環境,然后就找到自用的aliyun主機先測試下離線安裝,在用6.X環境是沒有互聯網的,必須需要離線安裝。 1. 下載對應python源…

力扣解題之保姆教程:(1)兩數之和(代碼詳解)

題目描述 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。 假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案里不能重復出現。你可以按任意順序返回…

Django模板

以下是一個簡單的Django模板示例&#xff1a; <!DOCTYPE html> <html><head><title>{{ title }}</title></head><body><h1>{{ heading }}</h1><p>{{ content }}</p></body> </html>一、模板的…

波奇學Linux:父子進程和進程狀態

vim編輯器&#xff0c;編寫一個程序模擬進程 在vim中查看sleep函數 底行模式輸入 寫個Makefile自動運行波奇學Linux:yum和vim-CSDN博客 運行程序 PID和PPID 查看進程目錄信息 實際有過濾出來有兩個&#xff0c;一個進程本身一個是grep程序&#xff0c;通過 -v grep過濾走含gre…