開源 Mock 工具 [djmockserver]~~~歡迎使用 star
djmockserver
介紹
本程式是基於django開發的mock server, 用於構造動態的複雜的mock響應.
在我另外的專案<BTest介面測試平臺>中使用開源工具moco作為mock服務. 然而, moco對於實際應用中構造複雜動態的響應的需求, 似乎並沒有很好的滿足, 需要二次開發定製. 為了滿足專案需要,就簡單的開發了此程式.
雖然簡單, 但也實用. 對照moco的用法, 本程式也使用json檔案來管理mock資料, 並可以使用多層目錄來管理檔案. 支援http/https.
專案地址: https://gitee.com/scu-zrb/djmockserver
特性說明
- json格式儲存mock資料(與moco類似),支援單檔案或多層目錄多檔案管理資料檔案
- 根據請求內容匹配,同一uri可配置多種響應結果
- mock資料修改實時更新無須重啟服務(增刪mock檔案需重啟)
- 支援python字串表示式(有白名單設定)執行,生成動態資料
- 支援自定義函式用於構造響應資料
- mock介面uri與真實uri保持一致
- 支援非mock介面的請求轉發
軟體架構
安裝教程
- git clone下載專案
- 切換到專案根目錄
pip install -r requirements.txt
- 配置mock資料檔案,字尾為.json,可N個mock檔案,支援多層目錄管理
- 修改配置
djmockserverproject/settings.py
檔案(檔案路徑必填) - 執行服務
python manage.py runserver
- 使用三方庫擴充後可支援https
# djmockserverproject/settings.py
# 必填 mock資料檔案路徑,可以是單個檔案,或資料夾
MOCK_FILE_PATH = os.path.join(BASE_DIR, 'djmockserver', 'mockdata')
# MOCK_FILE_PATH = os.path.join(BASE_DIR, 'mock.json')
# mock資料檔案重新整理間隔, 單位:秒
REFRESH_INTERVAL = 2
# 選填 設定後,mock在匹配請求失敗時,會把請求轉發到此地址, 否則返回404
# REMOTE_HOST = 'http://127.0.0.1:8000'
# 選填 設定函式白名單列表
ADD_FUNC = ['len', 'str']
使用說明
Mock檔案欄位
1. request 支援的欄位 (參考 RequestSerializer 類)
- uri: str
- method: str
- queries: dict
- form/json: dict
- body: str 非form和json格式的內容,如文字、html、xml等資料
- cookies: dict
- description: str 描述性文字
2. response 支援的欄位 (參考 ResponseMaker 類)
- status: int 響應碼
- headers: dict 頭域
- vars: dict 設定區域性變數, 從上往下,優先順序增加. 變數執行先於響應(text/json)
- text: str
- json: dict 預設content-type為application/json
- text與json互斥,同在時json優先
Mock檔案格式
與moco格式一致, 以列表套字典的形式編寫, 具體欄位參考上面說明
[
{
"description": "",
"request": {},
"response": {}
},
{
"description": "",
"request": {},
"response": {}
}
]
可以多個檔案儲存多個URI響應列表(此時應該配置MOCK_FILE_PATH為檔案所在目錄)
構造動態響應
只要是符合python語法的字串表示式,且在白名單(變數函式)中,均可執行.
1. 變數
- 只允許使用response中設定的區域性變數和settings中設定的全域性變數(如有).
2. 響應
擴充函式(
djmockserver\mock\extend_func\extend_functions.py
): 自行擴充,定義函式,用於變數和響應中.函式白名單(
ADD_FUNC
):為了安全考慮,限制python內建函式的使用.如要使用,需要新增函式到白名單中.
3. mock配置樣例
- 路徑:
djmockserver\mockdata\
提取請求
配合函式collection_get和變數req, 可以提取請求資料, 處理後作為響應內容返回.
請求轉發
主要是開發同學會用得上. 考慮到在實際開發中, host都是一處配置全域性使用, 和uri分離. 而大多數的介面都有前置介面, 有上下文關係.
這時要使用mock,要麼把全域性host配置為mock地址而前置介面也mock掉,要麼在被mock介面程式碼增加區域性host(mock地址).
很明顯兩種方式都不好.這種情況下轉發請求就比前面的更合適.
只需配置全域性host為mock地址,並在本程式settings.py檔案中配置轉發地址即可.只要是未mock的請求都會轉發.
TODO
- 增加mock資料管理頁
- 更多協議的支援?
最後
程式碼設計地不夠優雅, 還有很多地方有待斟酌, 基本滿足工作而已.
相關文章
- react-admin-plus 正式開源, 歡迎starReact
- 歡迎使用開源持久化框架 MyBatis Enhance持久化框架MyBatis
- FastJsp3.1正式開源,歡迎使用。ASTJS
- ThinkSWN開源社群問答系統 免費開源 歡迎使用
- KeepGank.IO- 又一款開源 Gank.IO 客戶端. 歡迎 star客戶端
- 阿里 Mock 工具正式開源,幹掉市面上所有 Mock 工具!阿里Mock
- 寫了個go工具,用於並行執行協程,歡迎 star,哦不對,是求 starGo並行
- FastJsp3.1 jsp開發框架正式開源,歡迎使用。ASTJS框架
- 歡迎使用開源的程式碼生成器Code-BuilderUI
- 年度最受歡迎的開源CHROME外掛Chrome
- 2017年最受歡迎的十大開源黑客工具黑客
- 最受歡迎的App開發工具推薦APP
- livewire加tailwindcss寫了一個部落格歡迎starAICSS
- 15個最受歡迎的Python開源框架Python框架
- 14個最受歡迎的Python開源框架Python框架
- 本人的開源專案列表!歡迎下載!
- 最受IT公司歡迎的50款開源軟體
- François Chollet:ArXiv中最受歡迎的開源框架框架
- 【轉】15個最受歡迎的Python開源框架Python框架
- 開源中國專訪 TJ:開源許可證,歡迎來到雲時代
- 開源中國:2012年度最受歡迎中國開源軟體排名
- 盤點五類最受歡迎的開源雲專案
- 轉載:15個最受歡迎的Python開源框架Python框架
- 介紹一款倍受歡迎的.NET 開源UI庫UI
- 億憶網客戶端原始碼開源!歡迎探討!客戶端原始碼
- 最受DevOps歡迎的五種工具dev
- 5.1 萬 Star!不用 root 就能連線控制安卓的開源工具安卓開源工具
- 來說說目前受歡迎的10個Python開源框架Python框架
- 史上最輕量!阿里新型單元測試 Mock 工具開源阿里Mock
- 開源一個製作小工具的小工具,順便求個 star
- 【開源之夏 2023】歡迎報名 SOFAStack 社群專案!AST
- 中國開源雲聯盟年度評選正式啟動,歡迎申報!
- 歡迎 Llama 3:Meta 的新一代開源大語言模型模型
- HHDESK新功能釋出,歡迎大家使用
- 歡迎使用部落格定位編輯器
- 北京歡迎AIAI
- 2014 上半年最受歡迎的開源雲專案集合
- 聖誕節前釋出的開源專案小結-歡迎補充