Files
E2E-Test/README.md
2025-11-04 16:29:07 +08:00

5.1 KiB
Raw Blame History

E2E 测试项目

这是一个采用 Page Object Model (POM) 设计模式的 Playwright E2E 测试项目,具有良好的可扩展性、可维护性和可读性。

项目结构

e2e/
├── config/
│   └── test.config.ts          # 测试配置文件(环境、超时、测试数据等)
├── pages/
│   ├── BasePage.ts             # 页面基类
│   ├── LoginPage.ts            # 登录页面对象
│   ├── StudentPage.ts          # 学生管理页面对象
│   ├── DreamiExplorePage.ts    # DreamiExplore 页面对象
│   └── EssayWritingPage.ts     # Essay Writing 页面对象
├── utils/
│   └── error-handler.ts        # 错误处理工具类
├── test-1.spec.ts              # 原始测试文件
├── 文书管理.spec.ts             # 原始文书管理测试
├── 文书管理-refactored.spec.ts  # 重构后的文书管理测试
└── README.md                   # 本文档

根目录/
├── run-tests.bat               # Windows 一键运行脚本
├── run-tests.sh                # Linux/Mac 一键运行脚本
└── playwright.config.ts        # Playwright 配置文件

设计特点

1. Page Object Model (POM)

  • 职责分离:每个页面有独立的 Page Object 类
  • 代码复用:页面操作封装为可复用的方法
  • 易于维护UI 变化只需修改对应的 Page Object

2. 配置集中管理

  • 所有配置信息集中在 config/test.config.ts
  • 包括:环境 URL、登录凭证、超时设置、测试数据等
  • 方便切换不同环境和调整参数

3. 错误处理机制

  • 专门的 ErrorHandler 类管理错误
  • 自动捕获错误并继续执行
  • 生成详细的错误报告文件
  • 清理错误信息,去除技术细节

4. 可读性强

  • 测试步骤清晰明了
  • 采用描述性方法名
  • 良好的代码注释

快速开始

安装依赖

npm install

运行测试

Windows 用户

双击运行 run-tests.bat,或在命令行执行:

run-tests.bat

Linux/Mac 用户

首先给脚本添加执行权限:

chmod +x run-tests.sh

然后运行:

./run-tests.sh

手动运行测试

运行所有测试:

npx playwright test

运行特定测试文件:

# 运行重构版本
npx playwright test e2e/文书管理-refactored.spec.ts

# 运行原始版本
npx playwright test e2e/文书管理.spec.ts
npx playwright test e2e/test-1.spec.ts

查看测试报告:

npx playwright show-report

配置说明

修改测试环境

编辑 e2e/config/test.config.ts

export const TestConfig = {
  env: {
    baseUrl: 'https://pre.prodream.cn/en',  // 修改为你的测试环境
    loginUrl: 'https://pre.prodream.cn/en',
  },
  credentials: {
    email: 'your-email@example.com',        // 修改登录账号
    password: 'your-password',
  },
  // ... 其他配置
};

调整超时设置

test.config.ts 中的 timeouts 部分调整各个操作的超时时间。

修改测试数据

test.config.ts 中的 testData 部分修改测试使用的数据。

添加新的测试

1. 创建新的 Page Object

e2e/pages/ 目录下创建新的页面类:

import { Page, expect } from '@playwright/test';
import { BasePage } from './BasePage';

export class YourPage extends BasePage {
  constructor(page: Page) {
    super(page);
  }

  async yourMethod(): Promise<void> {
    // 实现页面操作
  }
}

2. 在测试中使用

在测试文件中导入并使用:

import { YourPage } from './pages/YourPage';

test('your test', async ({ page }) => {
  const yourPage = new YourPage(page);
  await yourPage.yourMethod();
});

错误报告

测试完成后会自动生成错误报告文件:

  • 文件名格式:test-error-report-{timestamp}.txt
  • 包含内容:
    • 登录账号信息
    • 每个失败步骤的详细信息
    • 错误发生时的页面 URL
    • 错误时间戳

最佳实践

  1. 保持 Page Object 简洁:每个方法只做一件事
  2. 使用有意义的方法名:让测试代码像文档一样可读
  3. 集中管理配置:避免硬编码
  4. 合理设置超时:根据实际情况调整
  5. 错误处理:利用 executeStep 包装测试步骤
  6. 定期维护:随 UI 变化更新 Page Object

常见问题

Q: 测试超时怎么办?

A: 在 test.config.ts 中调整对应操作的超时时间。

Q: 如何调试失败的测试?

A:

  1. 查看生成的错误报告文件
  2. 使用 Playwright 的调试模式:npx playwright test --debug
  3. 查看 HTML 报告:npx playwright show-report

Q: 如何只运行单个测试?

A: 使用 .only

test.only('your test', async ({ page }) => {
  // ...
});

贡献指南

  1. 遵循现有的代码风格
  2. 为新功能添加适当的注释
  3. 更新相关文档
  4. 确保所有测试通过

技术栈

  • Playwright: E2E 测试框架
  • TypeScript: 类型安全的 JavaScript
  • Page Object Model: 设计模式
  • Node.js: 运行环境