初衷

身处软件测试行业的各位应该都有耳闻HttpRunner 开源测试工具/框架(接口测试),作者博客

为什么出这系列?

  1. 不少测试同行都建议阅读HttpRunner,源码学习其设计思想。
  2. 社区当下Python系的接口测试平台多是基于HttpRunner实现
  3. 个人想尝试阅读,并记录希望也能帮到你

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

参考资料

感谢以下内容的作者

HttpRunner - 李隆 / debugtalk

HttpRunner3.x中文文档 - 在路上

微信公众号

HttpRunner3源码阅读: 1. 目录结构分析的更多相关文章

  1. Spring源码阅读-ApplicationContext体系结构分析

    目录 继承层次图概览 ConfigurableApplicationContext分析 AbstractApplicationContext GenericApplicationContext Gen ...

  2. HttpRunner3源码阅读:4. loader项目路径加载,用例文件转换、方法字典生成

    loader.py 这个文件中主要是对yaml,json用例加载转换成用例处理, 预置函数加载成方法字典,路径加载等 可用资料 [importlib]. https://docs.python.org ...

  3. HttpRunner3源码阅读:2. 模型定义

    models.py 昨天体验的时候我们分别执行了httprunner -h,httprunner startproject demo, httprunner run demo,但是源码中其调用了其他文 ...

  4. HttpRunner3源码阅读:7.响应后处理 response.py

    response 上一篇说的client.py来发送请求,这里就来看另一个response.py,该文件主要是完成测试断言方法 可用资料 jmespath[json数据取值处理]: https://g ...

  5. Spring源码阅读-BeanFactory体系结构分析

    BeanFactory是Spring中非常重要的一个类,搞懂了它,你就知道了bean的初始化和摧毁过程,对于深入理解IOC有很大的帮助. BeanFactory体系结构 首先看一下使用IDEA生成的继 ...

  6. 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介

    前言        古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...

  7. Flink源码阅读(1.7.2)

    目录 Client提交任务 flink的图结构 StreamGraph OptimizedPlan JobGraph ExecutionGraph flink部署与执行模型 Single Job Jo ...

  8. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  9. 【原】SDWebImage源码阅读(五)

    [原]SDWebImage源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 前面的代码并没有特意去讲SDWebImage的缓存机制,主要是想单独开一章节专门讲 ...

随机推荐

  1. NOIP模拟测试14「旋转子段·走格子·柱状图」

    旋转子段 连60分都没想,考试一直肝t3,t2,没想到t1最简单 我一直以为t1很难,看了题解发现也就那样 题解 性质1 一个包含a[i]旋转区间值域范围最多为min(a[i],i)----max(a ...

  2. 喜鹊开发者(The Magpie Developer)

    搬运文,原文地址:https://div.io/topic/1576 我经常感觉,开发人员很像我们所说的喜鹊,以不停的获取很多小玩意来装饰他们的窝而著称.就像喜鹊一样,开发人员通常都被定义为聪明的.好 ...

  3. Drools规则引擎实践直白总结

    目录 1. 创建Drools环境(引入Drools相关依赖包.现在都流行spring boot,故最简单有效的依赖才是最好的,kie-spring内部自行依赖了drools相关核心的依赖包) 2. 了 ...

  4. js笔记10

    1.闭包 封装:减少代码的冗余,提高代码的重复利用率 继承:本来需要开辟多个空间,只需要开辟一个空间,减少内存的消耗,提高性能 函数归属:函数归属谁,跟他在哪调用没有关系,而跟他在哪定义有关 闭包的定 ...

  5. 如何在Vue的项目里对element的表单验证进行封装

    介绍需求 熟悉并优化公司项目的第五天,领导说能不能把表单验证封装一下,我打开代码一看 由于是后台管理系统,无数个需要验证的输入框,由于截图长度受限,只能展示部分,类似于这种页面还有无数个!代码重复率非 ...

  6. Kubernetes之Ingress

    在Service篇里面介绍了像集群外部的客户端公开服务的两种方法,还有另一种方法---创建Ingress资源. 定义Ingress (名词)-进入或进入的行为;进入的权利;进入的手段或地点;入口. 接 ...

  7. centos 安装启动配置Jenkins

    一.Jenkins的安装 1.前提条件:已经成功安装了OPENJDK,因为jenkins是一款基于Java的持续集成工具. 安装OPENJDK的链接请参见我的另一篇博客: 安装连接:https://w ...

  8. AcWing 1141. 局域网

    某个局域网内有n台计算机和m条 双向 网线,计算机的编号是1~n由于搭建局域网时工作人员的疏忽, 现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象 ...

  9. flink数据广播场景总结

    数据集广播,主要分为广播变量,广播维表(数据集)两种,一种为变量,一种为常量(抽象的说法): 一.数据广播背景 对于小变量,小数据集,需要和大数据集,大流进行联合计算的时候,往往把小数据集广播出去,整 ...

  10. redis-cluster集群安装(windows)

    在此先奉上安装包(链接:https://pan.baidu.com/s/1QHYQPkYPuiRWhdj9APbjnw 提取码:jv8x ) 1. 安装ruby 下载 rubyinstaller-2. ...