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 --------

 

posted @ 2021-10-31 18:07  徒手沉浮  阅读(904)  评论(0编辑  收藏  举报