Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00
..

E2E测试框架

基于Python + Playwright的端到端测试框架,支持Admin后台管理端和Uniapp客户端的双端测试。

项目结构

python_e2e/
├── config/                 # 配置文件
│   └── config.yaml        # 多环境配置
├── core/                   # 核心框架
│   ├── config_manager.py  # 配置管理器
│   ├── logger.py          # 日志记录器
│   ├── exception_handler.py # 异常处理器
│   ├── retry_decorator.py # 重试装饰器
│   ├── reporter.py        # 报告生成器
│   └── screenshot_helper.py # 截图辅助
├── pages/                  # 页面对象模型
│   ├── base_page.py       # 页面基类
│   ├── web/               # Admin端页面
│   │   ├── login_page.py
│   │   ├── dashboard_page.py
│   │   ├── user_management_page.py
│   │   ├── role_management_page.py
│   │   └── menu_management_page.py
│   └── uniapp/            # Uniapp端页面
│       ├── almanac_page.py
│       ├── calendar_page.py
│       └── user_page.py
├── test_data/              # 测试数据
│   └── factories/
│       ├── user_factory.py
│       ├── role_factory.py
│       └── almanac_factory.py
├── tests/                  # 测试用例
│   ├── web/               # Admin端测试
│   │   ├── test_auth.py
│   │   ├── test_user_management.py
│   │   └── ...
│   └── uniapp/            # Uniapp端测试
│       ├── test_almanac.py
│       ├── test_calendar.py
│       └── ...
├── scripts/                # 执行脚本
│   └── run_tests.sh       # 测试执行脚本
├── conftest.py            # 全局夹具
├── pytest.ini            # pytest配置
└── requirements.txt       # 依赖包

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 安装Playwright浏览器

python -m playwright install chromium

3. 运行测试

# 运行所有测试
./scripts/run_tests.sh

# 运行冒烟测试
./scripts/run_tests.sh -m smoke

# 运行Admin端测试
./scripts/run_tests.sh -m admin

# 运行Uniapp端测试
./scripts/run_tests.sh -m uniapp

# 运行指定测试文件
./scripts/run_tests.sh -p tests/web/test_auth.py

# 无头模式运行并生成报告
./scripts/run_tests.sh --headless --html --allure

4. 查看报告

# HTML报告
open reports/html/test_report.html

# Allure报告
allure serve reports/allure-results

配置说明

环境配置

编辑 config/config.yaml 文件配置不同环境:

environments:
  dev:
    admin:
      base_url: "http://localhost:5174"
      api_url: "http://127.0.0.1:8080"
    uniapp:
      base_url: "http://localhost:3000"
      api_url: "http://127.0.0.1:8080"

环境变量

  • TEST_ENV: 测试环境 (dev/test/prod)
  • TEST_BASE_URL: 基础URL
  • TEST_API_URL: API URL
  • TEST_HEADLESS: 是否无头模式 (true/false)

测试用例编写规范

基本结构

import pytest
import allure
from playwright.sync_api import Page

@allure.epic("Admin后台管理")
@allure.feature("用户管理模块")
class TestUserManagement:
    """用户管理测试类"""

    @allure.title("创建新用户测试")
    @allure.description("验证可以成功创建新用户")
    @allure.severity(allure.severity_level.CRITICAL)
    @pytest.mark.smoke
    def test_create_user_success(self, authenticated_page: Page, user_management_page):
        with allure.step("导航到用户管理页面"):
            user_management_page.navigate()
            assert user_management_page.is_loaded()

        with allure.step("创建新用户"):
            user_management_page.click_create_button()
            user_management_page.fill_form_username("testuser")
            user_management_page.click_form_submit()

        with allure.step("验证创建成功"):
            assert user_management_page.has_success_message()

标记使用

  • @pytest.mark.smoke: 冒烟测试
  • @pytest.mark.regression: 回归测试
  • @pytest.mark.admin: Admin端测试
  • @pytest.mark.uniapp: Uniapp端测试
  • @pytest.mark.slow: 慢速测试

核心功能

1. 配置管理

支持多环境配置,通过配置文件或环境变量设置。

2. 页面对象模型 (POM)

封装页面元素和操作,提高测试可维护性。

3. 数据工厂

使用Faker生成测试数据,支持批量数据生成。

4. 异常处理

智能异常分类,自动重试机制。

5. 报告生成

支持HTML、JSON、Allure多种报告格式。

最佳实践

1. 元素定位策略

优先使用以下定位方式:

  1. data-testid 属性
  2. ARIA属性
  3. 角色定位
  4. 文本定位
  5. CSS选择器
  6. XPath(最后选择)

2. 测试数据管理

  • 使用数据工厂生成动态数据
  • 避免硬编码测试数据
  • 测试后清理数据

3. 测试独立性

  • 每个测试用例独立执行
  • 不依赖其他测试的执行顺序
  • 使用夹具准备测试环境

4. 断言策略

  • 使用明确的断言消息
  • 验证关键业务逻辑
  • 避免过度断言

故障排除

测试失败常见原因

  1. 元素未找到

    • 检查元素定位器是否正确
    • 增加等待时间
    • 检查页面是否完全加载
  2. 超时错误

    • 增加超时配置
    • 检查网络连接
    • 检查服务是否正常运行
  3. 浏览器崩溃

    • 重启测试
    • 检查系统资源
    • 更新Playwright版本

调试技巧

  1. 启用可视化模式

    ./scripts/run_tests.sh --headed
    
  2. 启用慢动作 修改 pytest.ini 中的 --slowmo 参数

  3. 查看截图 测试失败时自动保存截图到 reports/screenshots/

  4. 查看日志 日志文件保存在 logs/ 目录

贡献指南

代码规范

  • 遵循PEP 8编码规范
  • 使用类型注解
  • 编写文档字符串
  • 添加适当的注释

提交规范

  • 使用清晰的提交信息
  • 一个提交只包含一个功能
  • 提交前运行测试

许可证

MIT License

联系方式

如有问题或建议,请联系项目维护者。