httprunner3源碼解讀(二):目錄結構分析


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

1、為什么寫httprunner的源碼解讀?

  1. 當下Python系的接口測試框架多數基於httprunner實現或采用了類似的設計思想,httprunner可以作為一個典型來深入了解。
  2. 閱讀httprunner3源碼並學習其設計思想,自己在工作中也有寫過一些接口測試框架並應用與測試團隊中,覺得做的還不錯,且沒依賴現有的框架,但是隨着項目規模不斷增大、場景需求的增加,還是有設計上不合理,基於已有測試數據較多,可能還只能做補丁修改,極不方便再做設計變更。
  3. 記錄自己基於httprunner接口測試框架的二次開發歷程,希望也能幫到你。
  4. 關於接口測試框架設計原則,可以參考 自動化測試框架設計原則

2、依賴庫

上一篇有講到httprunner擁抱開源,依賴requests ,pytest ,pydantic ,allure 和 locust ,除此外還依賴一些比較好用的第三方庫。官方文檔(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封裝,網絡請求client
 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 腳手架,快速生成httprunner測試項目
12 │  testcase.py  # 測試用例對象封裝
13 │  utils.py     # 工具類
14 │  __init__.py  # 初始化文件,指定httprunner庫包含的模塊
15 │  __main__.py  # httprunner命令入庫,調用cli.py的main函數
16 17 ├─app     # 網絡服務模塊
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 文件 轉 httprunner測試用例文件
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 --------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM