初衷

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

为什么出这系列?

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

HttpRunner依赖库

出自: https://github.com/httprunner/httprunner/blob/master/pyproject.toml

HttpRunner 使用了 poetry库 来进行包管理 和打包的操作

  1. requests = "^2.22.0" # 请求库
  2. pyyaml = "^5.1.2" # 解析yaml
  3. jinja2 = "^2.10.3" # 模板文件,生产测试文件
  4. pydantic = "^1.4" # 数据类型定义,类型校验
  5. loguru = "^0.4.1" # 日志
  6. jmespath = "^0.9.5" # json 提取
  7. black = "^19.10b0" # python 代码格式化工具
  8. pytest = "^5.4.2" # 单元测试框架
  9. pytest-html = "^2.1.1" # 简易html报告
  10. sentry-sdk = "^0.14.4" # 没get到xx[好像是版本相关的]
  11. allure-pytest = "^2.8.16" # allure 报告
  12. requests-toolbelt = "^0.9.1" # 估计是上传文件用到的
  13. filetype = "^1.0.7" # 文件类型判断
  14. locust = "^1.0.3" # 协程实现的性能测试工具 [此次学习不带它]
  15. Brotli = "^1.0.9" # 压缩

1. 体验

  1. # 安装
  2. pip install httprunner
  3. # 创建项目
  4. httprunner startproject demo
  5. # 运行项目
  6. hrun demo

最终目录结构

该系列要阅读的内容

目录结构分析

  1. cli.py # 命令封装
  2. client.py # 请求方法逻辑
  3. compat.py # 处理testcase格式v2和v3之间的兼容性问题。
  4. exceptions.py # 自定义异常
  5. loader.py # 加载文件、环境变量、参数化
  6. make.py # 生产测试文件
  7. models.py # pydantic 数据模型定义
  8. parser.py # 解析自定义语法`$name`,`${func(5)}`
  9. response.py # 响应内容处理,断言逻辑
  10. runner.py # 执行/启动器
  11. scaffold.py # HttpRunner 脚手架
  12. testcase.py # 测试用例的方法封装
  13. utils.py # 工具类
  14. __init__.py # 部分包聚集地
  15. __main__.py # cli 的 测试启动文件

  16. ├─app # FastAPI 应用程序 [可能和官方要出的平台有点关系]
  17. main.py
  18. __init__.py

  19. └─routers
  20. debug.py
  21. debugtalk.py
  22. deps.py
  23. └─__init__.py

  24. ├─builtin
  25. comparators.py
  26. functions.py
  27. └─__init__.py

  28. └─ext
  29. __init__.py

  30. ├─har2case # har 文件 转 测试用例
  31. core.py
  32. utils.py
  33. └─__init__.py

  34. ├─locust # 性能测试相关[本次略过]
  35. locustfile.py
  36. └─__init__.py

  37. └─uploader # 文件上传

  38. └─__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. [Linux]经典面试题 - 系统管理 - 备份策略

    [Linux]经典面试题 - 系统管理 - 备份策略 目录 [Linux]经典面试题 - 系统管理 - 备份策略 一.备份目录 1.1 系统目录 1.2 服务目录 二.备份策略 2.1 完整备份 2. ...

  2. Spring Data JPA的Audit功能,审计数据库的变更

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 数据库审计 数据库审计是指当数据库有记录变更时,可以记录数据库的变更时间和变更人等,这样以后出问题回溯问责也比较方便. ...

  3. 什么是OSI的第7层

    1.什么是Internet的第7层? 第7层是指Internet的7层OSI模型的顶层,也称为"应用程序层".这是数据处理的顶层,位于用户与之交互的软件应用程序的表面之下或幕后.例 ...

  4. 37.qt quick- 高仿微信实现局域网聊天V3版本(添加登录界面、UDP校验登录、皮肤更换、3D旋转)

    1.版本介绍(已上传至群里) 版本说明: 添加登录界面. UDP校验登录. 皮肤更换. 3D旋转(主界面和登录界面之间切换) . 效果图如下所示: 如果效果图加载失败,可以去哔哩哔哩 https:// ...

  5. Murmur3 Hash 128位java和C#方法

    java调用com.google.guava 引入依赖 <dependency> <groupId>com.google.guava</groupId> <a ...

  6. 『心善渊』Selenium3.0基础 — 21、Selenium实现绕过验证码进行登陆

    目录 1.验证码问题 2.处理验证码的方法 3.Selenium绕过验证码登陆的实现 4.总结 5.补充练习 1.验证码问题 对于Web应用来说,大部分的系统在用户登录时,都要求用户输入验证码.验证码 ...

  7. Sentinel流控与熔断

    参考: https://thinkwon.blog.csdn.net/article/details/103770879 项目结构 com.guo     ├── guo-sentinel       ...

  8. 构建自己的dockerfile

    一)创建自己的CentOS 构建dockerfile的原理图 Docker Hub中99%的镜像都是从FROM scratch这个基础镜像过来的.然后配置需要的软件和配置来进行构建. FROM #基础 ...

  9. Ionic命令笔记

    Ionic命令:ionic serve 开启服务调试ionic cordova prepare android 生成android原生项目 ionic cordova run browser 打包成混 ...

  10. P4827「国家集训队」 Crash 的文明世界

    「国家集训队」 Crash 的文明世界 提供一种不需要脑子的方法. 其实是看洛谷讨论版看出来的( (但是全网也就这一篇这个方法的题解了) 首先这是一个关于树上路径的问题,我们可以无脑上点分治. 考虑当 ...