当前位置: 首页 > news >正文

pytest自动化测试框架项目架构

本文介绍了基于pytest的自动化测试框架项目架构设计。整体采用分层设计,包含config(全局配置)、core_base(底层功能封装)、resource(业务流关键字)、data(测试数据)、test_cases(测试用例)等核心目录。其中config存放环境配置和pytest钩子,core_base实现底层操作封装,resource组合原子操作形成业务流,test_cases通过排列组合业务流构建测试用例。框架还包含reports(测试报告)、common(公共工具)等辅助目录,以及定义pytest运行规则的pytest.ini文件。该架构实现了测试数据与代码分离、功能模块化复用,并通过conftest.py管理全局fixture和钩子函数,体现了自动化测试框架的高效性和可维护性特点。

一、pytest自动化测试框架项目架构图

pytest_automation/
├── config/ # 全局配置文件
│ ├── settings.py # 项目配置(环境、URL、账号、超时时间等)
│ └── conftest.py # pytest 全局钩子、 fixture、插件配置(核心文件)
├── core_base/ # 底层单一功能函数(原子性的)
│ ├── base_api.py # API 基础请求封装(requests 二次封装)
│ ├── base_ui.py # UI 基础操作封装(selenium/appium)
│ └── logger.py # 日志打印封装
├── resource/ # 业务流关键字封装,将多个单一功能函数封装成一个更高层级的动作
│ ├── login_page.py
├── data/ # 测试数据
│ ├── api_data/ # 接口测试用例数据
│ └── ui_data/ # UI测试用例数据
├── test_cases/ # 测试用例目录,测试用例就是多个业务流关键字的排列组合
│ ├── api_test/ # 接口用例
│ └── ui_test/ # UI用例
├── reports/ # 测试报告(自动生成)
├── common/ # 公共工具类
│ ├── utils.py # 通用工具(时间、加密、文件处理)
│ └── assert_util.py # 断言封装
├── requirements.txt # 依赖包清单
└── pytest.ini # pytest 主配置文件

二、每个目录 / 文件 作用说明

(1)config目录 —— 配置中心

settings.py:全局配置(环境、项目路径、日志级别、报告名称)

env.yaml:多环境地址、账号密码(方便切换测试环境)

(2)core_base目录 —— 框架核心

实现所有底层单一功能函数。

base_api.py:封装 GET/POST/PUT/DELETE,自动加请求头、鉴权

base_ui.py:封装 Selenium 常用操作(点击、输入、等待)

logger.py:统一日志格式,输出到文件 + 控制台

(3)data目录 — 测试数据测试数据与代码逻辑分离,支持 yaml、excel、json

(4)resource目录业务流关键字目录

将多个单一功能函数封装成一个更高层级的动作。因为多个测试用例,会共用一些相同的测试步骤,这时把具有相同测试步骤但是测试数据不同的业务流封装成一个业务关键字函数,即core_base目录中的单一功能函数的排列组合,测试数据作为业务关键字函数入参即可。

(5)test_cases目录 — 测试用例(最重要)

所有用例必须放在这里,pytest 默认识别

文件名:test_*.py 函数名:test_*

(6)reports目录——测试报告

(7)common目录 —— 公共工具类方法,全项目复用

(8)conftest.py文件 —— pytest 灵魂

全局 fixture(登录、token、驱动、环境初始化)

钩子函数(修改报告、用例失败截图、数据清理)

(9)pytest.ini文件 —— pytest 配置

运行规则、编码、标签、忽略目录、默认参数

http://www.zskr.cn/news/1426353.html

相关文章:

  • 炎症信号网络的分子机制、调控失衡与科研应用综述
  • 告别VGG16!用MobileNet+PFLD在MindSpore上实现140FPS的人脸关键点检测
  • 别再只懂k-anonymity了:用Python实战带你理解l-diversity和t-closeness的进阶隐私保护
  • 2026 盘点专业做钢格栅的厂家汇总河北钢格栅板及钢格板源头生产厂家信息 - 栗子测评
  • 氢氧化镁多少钱,银羽牌氢氧化镁性价比高吗 - 工业品牌热点
  • 2026年好用的代理记账公司排名,方成财税上榜 - myqiye
  • 绕线机远程监控运维系统方案
  • Keil MDK安装报错Entry Point Not Found的解决方案
  • 2026 板式盆式高阻尼橡胶支座钢结构球型支座工厂产品性能综合测评 - 栗子测评
  • 手机号码归属地查询终极指南:3秒实现精准定位的完整解决方案
  • 3.46 基于改进孪生神经网络的手机摄影视觉定位
  • AI时代组织效能悖论:个体效率提升为何导致团队协作降级?
  • 2026多旋翼货运无人机/大载重多旋翼无人机/吊运无人机源头厂家哪家好 - 栗子测评
  • Unity工作流优化:自定义你的SP贴图导入管道,让材质匹配自动化起来
  • 2026杭州升降机出租公司指南:杭州装卸平台维修公司+杭州登高车出租公司+杭州液压升降平台维修推荐 - 栗子测评
  • 不只是登录:让ThinkPad X1 Carbon指纹在Ubuntu 22.04/24.04上也能sudo授权和锁屏解锁
  • 别再手动改代码了!用Vivado VIO IP核实时调试你的FPGA串口模块(附UART实例)
  • 2026不锈钢钢管批发厂家推荐:316L/304不锈钢批发源头厂家实力深度解析 - 栗子测评
  • 避坑指南:Silvaco TCAD 2018安装后,如何解决License报错和TonyPlot启动问题?
  • 2026年EPP玩具模型价格排名,哪家性价比高? - mypinpai
  • 告别编译噩梦:用 CP2K 官方 Toolchain 脚本在 Ubuntu 上自动化部署(含 MKL 和 GCC 配置)
  • 告别raspistill!树莓派4B新手必看:用libcamera玩转CSI摄像头(附VNC黑屏修复)
  • 从‘免调度’到‘导频污染’:无线通信工程师眼中的NOMA实战避坑指南
  • 亚马逊网络设计重大突破:提升数据传输速度、降低能耗,或在云竞赛中占优
  • 2026年最新|应对Turnitin严查:英文论文AI率95%降至0%亲测,5款工具与手改全指南 - 降AI实验室
  • ADS1262/ADS1263高精度ADC嵌入式驱动包:C++封装,支持双通道采集、IDAC配置与系统校准
  • PotPlayer播放4K HDR电影画面发灰?可能是MadVR和LAV没设对(附详细排查步骤)
  • Unity粒子系统避坑指南:从性能优化到常见Bug,让你的特效不再卡顿和穿模
  • 读工业软件简史05仿真和流程
  • 用Python+OpenCV+MySQL从零搭建一个带情绪分析的人脸考勤系统(附完整源码)