初衷
身處軟體測試行業的各位應該都有耳聞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
參考資料
感謝以下內容的作者