HttpRunner3源码阅读: 1. 目录结构分析
初衷
身处软件测试行业的各位应该都有耳闻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
参考资料
感谢以下内容的作者
微信公众号
HttpRunner3源码阅读: 1. 目录结构分析的更多相关文章
- Spring源码阅读-ApplicationContext体系结构分析
目录 继承层次图概览 ConfigurableApplicationContext分析 AbstractApplicationContext GenericApplicationContext Gen ...
- HttpRunner3源码阅读:4. loader项目路径加载,用例文件转换、方法字典生成
loader.py 这个文件中主要是对yaml,json用例加载转换成用例处理, 预置函数加载成方法字典,路径加载等 可用资料 [importlib]. https://docs.python.org ...
- HttpRunner3源码阅读:2. 模型定义
models.py 昨天体验的时候我们分别执行了httprunner -h,httprunner startproject demo, httprunner run demo,但是源码中其调用了其他文 ...
- HttpRunner3源码阅读:7.响应后处理 response.py
response 上一篇说的client.py来发送请求,这里就来看另一个response.py,该文件主要是完成测试断言方法 可用资料 jmespath[json数据取值处理]: https://g ...
- Spring源码阅读-BeanFactory体系结构分析
BeanFactory是Spring中非常重要的一个类,搞懂了它,你就知道了bean的初始化和摧毁过程,对于深入理解IOC有很大的帮助. BeanFactory体系结构 首先看一下使用IDEA生成的继 ...
- 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介
前言 古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...
- Flink源码阅读(1.7.2)
目录 Client提交任务 flink的图结构 StreamGraph OptimizedPlan JobGraph ExecutionGraph flink部署与执行模型 Single Job Jo ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- 【原】SDWebImage源码阅读(五)
[原]SDWebImage源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 前面的代码并没有特意去讲SDWebImage的缓存机制,主要是想单独开一章节专门讲 ...
随机推荐
- .NET Core/.NET5/.NET6 开源项目汇总3:工作流组件
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- 解Bug之路-ZooKeeper集群拒绝服务
解Bug之路-ZooKeeper集群拒绝服务 前言 ZooKeeper作为dubbo的注册中心,可谓是重中之重,线上ZK的任何风吹草动都会牵动心弦.最近笔者就碰到线上ZK Leader宕机后,选主无法 ...
- linux下的对拍程序
在比赛中我们通常会先打暴力 正解的正确与否,如果数据过大,我们就要用到对拍程序 1 #include<bits/stdc++.h> 2 using namespace std; 3 int ...
- etcd 添加用户,授权特定目录
适用场景 多组共用etcd集群,创建一个新用户.新目录,让这个新用户只有新目录的使用权限. 命令和顺序 创建目录,注意此处是v2 curl -u root:pwd http://host:2379/v ...
- element的日期选择使用value-format之后表单验证报错
在表单验证的时候报错 添加一个日期控件,但是发现在表单验证中遇到了冲突如下: Error in event handler for "el.form.change": " ...
- Go语言中slice作为参数传递时遇到的一些“坑”
前言 相信看到这个题目,可能大家都觉得是一个老生常谈的月经topic了.一直以来其实把握一个"值传递"基本上就能理解各种情况了,不过最近遇到了更深一点的"小坑" ...
- external-provisioner源码分析(3)-组件启动参数分析
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 external-provisioner源码分析(3)-组件启动参数分析 本文将对extern ...
- 在windows的情况下面右键添加vim
1, 首先打开注册表,然后打开下面路径: HKEY_CLASSES_ROOT\*\Shell 2, 右键新建项(也就是右键的文字): 用vim编辑 3, 在"用vim编辑"下面再 ...
- Ubuntu创建图标
起因 安装一些软件时,总是没有图标,导致无法固定到docky栏,所以极为不方便,所以需要自己创建图标. 操作 以创建微信图标为例 [Desktop Entry] Name=Wecaht #名字 Com ...
- bugku Crypto 下半部分wp
1. 百度托马斯这个人居然还发明了一种轮转的加密法,发现原理是,他将很多行乱序的26个字母,插到一根柱子上,参考糖葫芦的样子,可以旋转每一行,设置自己要发送的明文后,向对方发送乱码的一列,对方只要将这 ...