HttpRunner3原始碼閱讀: 1. 目錄結構分析
阿新 • • 發佈:2021-08-02
初衷
身處軟體測試行業的各位應該都有耳聞HttpRunner 開源測試工具/框架(
介面測試
),作者部落格
為什麼出這系列?
- 不少測試同行都建議閱讀HttpRunner,原始碼學習其設計思想。
- 社群當下Python系的介面測試平臺多是基於HttpRunner實現
- 個人想嘗試閱讀,並記錄希望也能幫到你
HttpRunner依賴庫
出自: https://github.com/httprunner/httprunner/blob/master/pyproject.toml
HttpRunner 使用了poetry
庫 來進行包管理 和打包的操作
requests = "^2.22.0" # 請求庫 pyyaml = "^5.1.2" # 解析yaml jinja2 = "^2.10.3" # 模板檔案,生產測試檔案 pydantic = "^1.4" # 資料型別定義,型別校驗 loguru = "^0.4.1" # 日誌 jmespath = "^0.9.5" # json 提取 black = "^19.10b0" # python 程式碼格式化工具 pytest = "^5.4.2" # 單元測試框架 pytest-html = "^2.1.1" # 簡易html報告 sentry-sdk = "^0.14.4" # 沒get到xx[好像是版本相關的] allure-pytest = "^2.8.16" # allure 報告 requests-toolbelt = "^0.9.1" # 估計是上傳檔案用到的 filetype = "^1.0.7" # 檔案型別判斷 locust = "^1.0.3" # 協程實現的效能測試工具 [此次學習不帶它] Brotli = "^1.0.9" # 壓縮
1. 體驗
# 安裝
pip install httprunner
# 建立專案
httprunner startproject demo
# 執行專案
hrun demo
最終目錄結構
該系列要閱讀的內容
目錄結構分析
│ cli.py # 命令封裝 │ client.py # 請求方法邏輯 │ compat.py # 處理testcase格式v2和v3之間的相容性問題。 │ exceptions.py # 自定義異常 │ loader.py # 載入檔案、環境變數、引數化 │ make.py # 生產測試檔案 │ models.py # pydantic 資料模型定義 │ parser.py # 解析自定義語法`$name`,`${func(5)}` │ response.py # 響應內容處理,斷言邏輯 │ runner.py # 執行/啟動器 │ scaffold.py # HttpRunner 腳手架 │ testcase.py # 測試用例的方法封裝 │ utils.py # 工具類 │ __init__.py # 部分包聚集地 │ __main__.py # cli 的 測試啟動檔案 │ ├─app # FastAPI 應用程式 [可能和官方要出的平臺有點關係] │ │ main.py │ │ __init__.py │ │ │ └─routers │ │ debug.py │ │ debugtalk.py │ │ deps.py │ └─__init__.py │ ├─builtin │ │ comparators.py │ │ functions.py │ └─__init__.py │ └─ext │ __init__.py │ ├─har2case # har 檔案 轉 測試用例 │ │ core.py │ │ utils.py │ └─__init__.py │ ├─locust # 效能測試相關[本次略過] │ │ locustfile.py │ └─__init__.py │ └─uploader # 檔案上傳 │ └─__init__.py
參考資料
感謝以下內容的作者