5.1 KiB
5.1 KiB
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
- 错误时间戳
最佳实践
- 保持 Page Object 简洁:每个方法只做一件事
- 使用有意义的方法名:让测试代码像文档一样可读
- 集中管理配置:避免硬编码
- 合理设置超时:根据实际情况调整
- 错误处理:利用
executeStep包装测试步骤 - 定期维护:随 UI 变化更新 Page Object
常见问题
Q: 测试超时怎么办?
A: 在 test.config.ts 中调整对应操作的超时时间。
Q: 如何调试失败的测试?
A:
- 查看生成的错误报告文件
- 使用 Playwright 的调试模式:
npx playwright test --debug - 查看 HTML 报告:
npx playwright show-report
Q: 如何只运行单个测试?
A: 使用 .only:
test.only('your test', async ({ page }) => {
// ...
});
贡献指南
- 遵循现有的代码风格
- 为新功能添加适当的注释
- 更新相关文档
- 确保所有测试通过
技术栈
- Playwright: E2E 测试框架
- TypeScript: 类型安全的 JavaScript
- Page Object Model: 设计模式
- Node.js: 运行环境