当前位置:首页>python>Python+Pytest企业级自动化框架集合

Python+Pytest企业级自动化框架集合

  • 2026-10-09 23:21:23
Python+Pytest企业级自动化框架集合
本文档面向研发、测试开发、QA、DevOps 与项目维护人员,系统说明该自动化测试框架的设计目标、目录结构、运行机制、核心模块、扩展方式、安全治理与工程化实践。

该项目是一个以pytest为测试编排核心,融合API 自动化、Web UI 自动化、App UI 自动化、数据库校验、契约测试、Allure 报告、邮件通知与稳定性治理的综合型测试框架。框架强调环境隔离、可观测性、安全脱敏、并发执行和企业级可维护性,适用于接口回归、端到端验证、Web 页面验证、移动端自动化以及 CI/CD 流水线集成场景。

1. 框架定位

该框架定位为企业级自动化测试基础设施,主要解决以下问题:

  • 统一 API、Web、App 三类自动化测试入口,降低多技术栈测试项目的维护成本。

  • 通过 pytest fixture 与 hook 管理测试生命周期,实现环境初始化、失败诊断、报告产出与资源回收。

  • 通过配置中心化管理环境差异,使同一套用例可以在test、prod等环境中按策略运行。

  • 通过响应校验、契约校验与数据库断言增强测试可信度。

  • 通过 Allure 报告、附件、环境信息和邮件通知提升测试结果的可观测性。

  • 通过敏感信息脱敏、生产写操作保护、SQL 安全封装等机制降低合规风险。

  • 通过 Web 稳定性治理、重试、存储态复用、失败快照等机制提升 UI 自动化稳定性。

2. 设计原则

  • 统一入口:通过run.py作为主启动器,将命令行参数转换为 pytest 参数并串联报告生成与邮件发送。

  • 分层解耦:测试用例、核心能力、配置读取、工具能力、页面对象、数据模型分层组织。

  • 安全默认:日志、报告附件、异常信息均尽量进行脱敏;生产环境写操作默认拦截。

  • 环境可切换:通过config/env_config.yaml与ConfigReader实现环境级配置隔离。

  • 可观测优先:失败时自动采集截图、DOM、页面源码、App 页面源等诊断信息。

  • 扩展友好:API 客户端、数据库客户端、契约校验器、页面基类均提供统一抽象,便于业务扩展。

  • CI 友好:提供Makefile、pytest marker、xdist 并发、Allure 结果目录和质量检查命令。

3. 技术栈

类别
技术
作用
测试编排
pytest、pytest-rerunfailures、pytest-xdist
用例发现、执行、失败重跑、并发执行
API 测试
requests、urllib3
HTTP 请求、连接池、重试、会话管理
Web 自动化
pytest-playwright、Playwright
浏览器驱动、页面交互、截图、网络控制
App 自动化
Appium-Python-Client、Selenium WebDriver API
移动端元素定位、手势、页面源码与截图采集
报告
allure-pytest、Allure CLI
测试步骤、附件、环境信息、HTML 报告
配置
PyYAML、环境变量
多环境配置、占位符解析
契约校验
pydantic v2、jsonpath-ng
JSONPath、模型校验、TypeAdapter、轻量 Schema 校验
数据库
sqlite3、PyMySQL、可扩展 psycopg2
数据查询、断言、测试数据管理
质量工具
pylint、black、mypy、pytest-cov
静态检查、格式化、类型检查、覆盖率
日志与安全
loguru、自定义脱敏工具
日志记录、敏感信息屏蔽

4.框架目录结构

src/├── .gitignore├── Makefile├── pytest.ini├── requirements.txt├── run.py├── conftest.py├── config/│ └── env_config.yaml├── core/│ ├── api_client.py│ ├── app_base.py│ ├── assert_utils.py│ ├── contract_validator.py│ ├── db_assert.py│ ├── logger.py│ ├── response_validator.py│ └── web_base.py├── data/├── page_objects/├── schemas/├── test_cases/├── tests/└── utils/├── config_reader.py├── db_client.py├── db_test_data.py├── email_reporter.py├── report_generator.py├── runtime_context.py├── security.py├── web_stability.py└── web_storage_state.py

4.1.文件说明

  • run.py:框架主入口,负责解析命令行参数、组装 pytest 参数、触发测试执行、生成 Allure 报告与发送邮件。

  • conftest.py:pytest 全局配置中心,负责注册命令行参数、初始化运行上下文、定义 fixture、采集失败诊断附件。

  • pytest.ini:pytest 默认行为配置,包括测试目录、marker、Allure 结果目录、失败重跑策略和 warning 策略。

  • requirements.txt:项目依赖声明,固定核心测试框架与质量工具版本。

  • Makefile:本地与 CI 的常用命令封装。

4.2.核心能力

  • core/:框架核心能力层,包括 API 客户端、Web/App 页面基类、断言工具、响应校验、契约校验、数据库断言等。

  • utils/:通用工具层,包括配置读取、数据库访问、测试数据管理、报告生成、邮件发送、安全脱敏、Web 稳定性治理、存储态管理等。

  • config/:环境配置目录。

  • page_objects/:页面对象模型目录,用于承载 Web/App 页面封装。

  • schemas/:Pydantic 模型与契约定义目录。

  • test_cases/:业务测试用例目录,是 pytest 默认发现路径。

  • data/:本地测试数据与运行时数据目录。

5. 执行链路

典型测试执行链路如下:

  • 用户执行python run.py或make test。

  • run.py解析 CLI 参数,设置运行目录并构造 pytest 参数。

  • pytest 加载 pytest.ini与conftest.py。

  • pytest_addoption注册框架扩展参数。

  • pytest_configure初始化环境、报告目录、Allure 元数据和运行上下文。

  • pytest 根据 marker、路径、并发参数执行测试。

  • 测试用例通过 fixture 获取 API 客户端、数据库客户端、浏览器上下文或 App driver。

  • 测试过程中通过AssertUtils、ResponseValidator、ContractValidator、DBAssert进行校验。

  • 失败时,pytest_runtest_makereport捕获上下文并附加截图、DOM、App 页面源等诊断信息。

  • pytest 执行结束后,run.py调用ReportGenerator生成 Allure HTML 报告。

  • 如开启邮件,EmailReporter汇总结果并发送 HTML 邮件。

  • 进程以 pytest exit code 作为最终执行状态。

6. 核心参数

参数
作用
--env
指定运行环境,如test、prod
--mark / -m
按 pytest marker 过滤用例
--workers / -n
指定 xdist 并发 worker 数
--web-trace
控制 Web trace 采集
--web-video
控制 Web video 采集
--web-har
控制 HAR 采集
--ignore-https-errors
浏览器上下文忽略 HTTPS 错误
--storage-state-user
指定 Web 登录态用户 key
--reset-storage-state
重置 Web 存储态

7. 关键流程

args = parse_args()pytest_args = build_pytest_args(args)exit_code = pytest.main(pytest_args)ReportGenerator(str(BASE_DIR)).generate_and_open(...)EmailReporter(BASE_DIR, email_config).send(...)sys.exit(exit_code)

未完,待下次继续。。。。。。。。

最新文章

随机文章