開源 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
- ThinkSWN開源社群問答系統 免費開源 歡迎使用
- 阿里 Mock 工具正式開源,幹掉市面上所有 Mock 工具!阿里Mock
- 寫了個go工具,用於並行執行協程,歡迎 star,哦不對,是求 starGo並行
- 歡迎使用開源的程式碼生成器Code-BuilderUI
- livewire加tailwindcss寫了一個部落格歡迎starAICSS
- 年度最受歡迎的開源CHROME外掛Chrome
- 15個最受歡迎的Python開源框架Python框架
- François Chollet:ArXiv中最受歡迎的開源框架框架
- 歡迎使用CSDN-markdown
- 【開源之夏 2023】歡迎報名 SOFAStack 社群專案!AST
- GitHub Star 數量前 12 的開源無程式碼工具Github
- 歡迎使用markdown編輯器
- 開源中國專訪 TJ:開源許可證,歡迎來到雲時代
- 來說說目前受歡迎的10個Python開源框架Python框架
- HelloGitHub 最受歡迎的開源專案 Top10(2022年)Github
- 介紹一款倍受歡迎的.NET 開源UI庫UI
- 史上最輕量!阿里新型單元測試 Mock 工具開源阿里Mock
- 2018最受歡迎開源免費CMS建站系統排行榜
- HelloGitHub 月刊最受歡迎的開源專案 Top10(2020 年)Github
- 2018年最受DevOps歡迎的五種工具!dev
- 開源一個製作小工具的小工具,順便求個 star
- blog開張,歡迎大家來做客
- 5.1 萬 Star!不用 root 就能連線控制安卓的開源工具安卓開源工具
- 歡迎 Llama 3:Meta 的新一代開源大語言模型模型
- 社群自研效能評測工具,歡迎試用!
- bugly的flutter版已完成,歡迎使用Flutter
- 歡迎使用CSDN-markdown編輯器---
- Now in Android:02 - 歡迎使用 Android Studio 4.0 !Android
- 歡迎使用部落格定位編輯器
- HHDESK新功能釋出,歡迎大家使用
- 歡迎使用園子的 vscode 外掛VSCode
- 從GitHub中整理出來的15個最受歡迎的Python開源框架,你喜歡哪個GithubPython框架
- 你願意成為開源的見證者嗎?歡迎參與2018開源調查報告
- 12個在GitHub等開源網站中受歡迎的Python開源框架,你用過哪個Github網站Python框架
- 歡迎關注
- 北京歡迎AIAI