1. 程式人生 > 其它 >httprunner3原始碼解讀(二):目錄結構

httprunner3原始碼解讀(二):目錄結構

上一篇簡單介紹了httprunner的主要特徵及簡單使用,從本篇開始陸續解讀httprunner3原始碼。

1、為什麼寫這系列?

  1. 閱讀httprunner3原始碼學習其設計思想
  2. 當下Python系的介面測試框架多數基於HttpRunner實現
  3. 記錄自己基於httprunner介面測試框架的二次開發歷程,希望也能幫到你

2、依賴庫

上一篇有講到httprunner擁抱開源,依賴requestspytestpydanticallurelocust,除此外還依賴一些比較好用的第三方庫。官方文件(https://docs.httprunner.org/)

 1 black==19.10b0    # python 程式碼格式化工具
2 Brotli==1.0.9 # 壓縮 3 Jinja2==2.11.3 # 模板檔案,生產測試檔案 4 jmespath==0.9.5 # json 提取,語法參考 https://jmespath.org/tutorial.html 5 loguru==0.4.1 # 日誌 6 pydantic==1.8.2 # 資料型別定義,型別校驗 7 pytest==5.4.3 # 單元測試框架 8 pytest-html==2.1.1 # pytest生成html報告 9 PyYAML==5.4.1 # 解析yaml 10 allure-pytest==2.8
.16 # 生成allure 報告 11 requests==2.26.0 # 請求庫 12 sentry-sdk==0.14.4 # 捕捉異常 13 locust = "^2.4.1" # 協程實現的效能測試工具

3、demo目錄

新建一個demo後最終目錄如下:

httprunner startproject demo

4、原始碼目錄

1 # https://github.com/httprunner/httprunner
2 git clone https://github.com/httprunner/httprunner.git

4.1、httprunner目錄結構分析

 1 │  cli.py       # 命令封裝
 2 │  client.py    # request封裝,請求方法邏輯
 3 │  compat.py    # 處理testcase格式v2和v3之間的相容性問題。
 4 │  exceptions.py  # 自定義異常
 5 │  loader.py    # 載入用例設計檔案JSON/YAML、環境變數、引數化,生成model定義的測試資料
 6make.py      # 依據測試資料生產pytest測試檔案,並格式化生成的python程式碼
 7 │  models.py    # pydantic 資料模型定義
 8 │  parser.py    # 引數解析器,解析用例當中引用變數、自定義方法等
 9 │  response.py  # 響應內容處理:斷言、變數提取
10 │  runner.py    # 執行/啟動器
11 │  scaffold.py  # HttpRunner 腳手架
12 │  testcase.py  # 測試用例的方法封裝
13 │  utils.py     # 工具類
14 │  __init__.py  # 部分包聚集地
15 │  __main__.py  # cli 的 測試啟動檔案
16 17 ├─app     # FastAPI 應用程式
18 │  │  main.py
19 │  │  __init__.py
20 │  │
21 │  └─routers
22 │     │  debug.py
23 │     │  debugtalk.py
24 │     │  deps.py
25 │     └─__init__.py
26 27 ├─builtin  # 內建方法、校驗比較器,供YAML/JSON用例設計檔案中testcases使用
28 │  │  comparators.py
29 │  │  functions.py
30 │  └─__init__.py
31 32 └─ext
33    │  __init__.py
34  35    ├─har2case     # har 檔案 轉 測試用例
36    │  │  core.py
37    │  │  utils.py
38    │  └─__init__.py
39  40    ├─locust      # 效能測試相關[本次略過]
41    │  │  locustfile.py
42    │  └─__init__.py
43  44    └─uploader  # 檔案上傳
45  46       └─__init__.py

4.2、框架流程

--------THE END--------