172 lines
4.3 KiB
Markdown
172 lines
4.3 KiB
Markdown
|
|
# Sub2API 测试体系
|
|||
|
|
|
|||
|
|
本目录包含 Sub2API 项目的完整测试体系,包括 E2E 测试、集成测试和工具脚本。
|
|||
|
|
|
|||
|
|
## 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
tests/
|
|||
|
|
├── e2e/ # E2E 测试 (Playwright)
|
|||
|
|
│ ├── *.spec.ts # 测试文件
|
|||
|
|
│ ├── pages/ # 页面对象
|
|||
|
|
│ └── setup/ # 全局设置
|
|||
|
|
├── performance/ # 性能测试
|
|||
|
|
│ ├── artillery/ # Artillery 负载测试
|
|||
|
|
│ └── k6/ # K6 负载测试
|
|||
|
|
├── scripts/ # 工具脚本
|
|||
|
|
│ ├── run-tests.sh # Linux/Mac 运行脚本
|
|||
|
|
│ ├── run-tests.bat # Windows 运行脚本
|
|||
|
|
│ └── generate-report.ts # 报告生成
|
|||
|
|
├── fixtures/ # 测试数据
|
|||
|
|
│ ├── users.json # 测试用户数据
|
|||
|
|
│ ├── accounts.json # 测试账号数据
|
|||
|
|
│ ├── groups.json # 测试分组数据
|
|||
|
|
│ └── api-keys.json # 测试 API 密钥
|
|||
|
|
├── docs/ # 测试文档
|
|||
|
|
│ ├── PERFORMANCE_TEST_REPORT.md # 性能测试报告
|
|||
|
|
│ ├── PERFORMANCE_TEST_PLAN.md # 性能测试计划
|
|||
|
|
│ ├── KEY_FORMAT_SUPPORT.md # Key 格式支持需求
|
|||
|
|
│ ├── FULL_TEST_REPORT.md # 全面测试报告
|
|||
|
|
│ ├── ADMIN_TEST_REPORT.md # E2E 测试报告
|
|||
|
|
│ └── SUMMARY.md # 测试汇总
|
|||
|
|
├── package.json # 测试依赖
|
|||
|
|
├── playwright.config.ts # Playwright 配置
|
|||
|
|
└── README.md # 本文件
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 测试文件列表
|
|||
|
|
|
|||
|
|
| 文件 | 描述 | 测试数 |
|
|||
|
|
|------|------|--------|
|
|||
|
|
| `login.spec.ts` | 登录模块测试 | 6 |
|
|||
|
|
| `dashboard.spec.ts` | 仪表盘模块测试 | 3 |
|
|||
|
|
| `navigation.spec.ts` | 导航菜单测试 | 3 |
|
|||
|
|
| `admin-users.spec.ts` | 用户管理测试 | 3 |
|
|||
|
|
| `admin-accounts.spec.ts` | 账号管理测试 | 2 |
|
|||
|
|
| `admin-groups.spec.ts` | 分组管理测试 | 2 |
|
|||
|
|
| `admin-redeem.spec.ts` | 兑换码测试 | 2 |
|
|||
|
|
| `admin-settings.spec.ts` | 系统设置测试 | 2 |
|
|||
|
|
| `responsive.spec.ts` | 响应式设计测试 | 4 |
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
### 安装依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd tests
|
|||
|
|
npm install
|
|||
|
|
npx playwright install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 运行所有测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 运行特定类型测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 后端单元测试
|
|||
|
|
npm run test:unit
|
|||
|
|
|
|||
|
|
# 前端集成测试
|
|||
|
|
npm run test:integration
|
|||
|
|
|
|||
|
|
# E2E 测试
|
|||
|
|
npm run test:e2e
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### E2E 测试选项
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 正常运行
|
|||
|
|
npx playwright test
|
|||
|
|
|
|||
|
|
# 显示浏览器
|
|||
|
|
npx playwright test --headed
|
|||
|
|
|
|||
|
|
# 交互模式
|
|||
|
|
npx playwright test --ui
|
|||
|
|
|
|||
|
|
# 调试模式
|
|||
|
|
npx playwright test --debug
|
|||
|
|
|
|||
|
|
# 特定浏览器
|
|||
|
|
npx playwright test --project=chromium
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 环境变量
|
|||
|
|
|
|||
|
|
| 变量 | 默认值 | 说明 |
|
|||
|
|
|------|--------|------|
|
|||
|
|
| BASE_URL | http://localhost:8080 | 测试目标 URL |
|
|||
|
|
| TEST_EMAIL | lon22@qq.com | 测试用户邮箱 |
|
|||
|
|
| TEST_PASSWORD | admin123 | 测试用户密码 |
|
|||
|
|
| CI | false | CI 环境标志 |
|
|||
|
|
|
|||
|
|
## 页面对象模式
|
|||
|
|
|
|||
|
|
使用页面对象模式组织测试代码:
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
import { LoginPage } from './pages';
|
|||
|
|
|
|||
|
|
test('login flow', async ({ page }) => {
|
|||
|
|
const loginPage = new LoginPage(page);
|
|||
|
|
await loginPage.goto();
|
|||
|
|
await loginPage.login('user@example.com', 'password');
|
|||
|
|
await loginPage.expectToBeLoggedIn();
|
|||
|
|
});
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 测试数据
|
|||
|
|
|
|||
|
|
测试数据存储在 `fixtures/` 目录:
|
|||
|
|
|
|||
|
|
- `users.json` - 测试用户数据
|
|||
|
|
- `accounts.json` - 测试账号数据
|
|||
|
|
- `groups.json` - 测试分组数据
|
|||
|
|
- `api-keys.json` - 测试 API 密钥
|
|||
|
|
|
|||
|
|
## 报告
|
|||
|
|
|
|||
|
|
测试报告生成在以下位置:
|
|||
|
|
|
|||
|
|
- HTML 报告: `playwright-report/index.html`
|
|||
|
|
- JSON 结果: `test-results/results.json`
|
|||
|
|
- Markdown 报告: 参见 `docs/` 目录
|
|||
|
|
|
|||
|
|
## 添加新测试
|
|||
|
|
|
|||
|
|
1. 在 `e2e/` 目录创建测试文件(*.spec.ts)
|
|||
|
|
2. 使用页面对象与页面交互
|
|||
|
|
3. 遵循命名规范: `*.spec.ts`
|
|||
|
|
4. 运行 `npm run test:e2e` 验证
|
|||
|
|
|
|||
|
|
## CI/CD 集成
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# GitHub Actions 示例
|
|||
|
|
- name: Run tests
|
|||
|
|
run: |
|
|||
|
|
cd tests
|
|||
|
|
npm install
|
|||
|
|
npx playwright install
|
|||
|
|
npm test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 测试结果
|
|||
|
|
|
|||
|
|
| 类别 | 状态 |
|
|||
|
|
|------|------|
|
|||
|
|
| 前端 (Vitest) | 301/301 通过 ✅ |
|
|||
|
|
| E2E (Playwright) | 27/27 通过 ✅ |
|
|||
|
|
| 后端 (Go) | ~200/~200 通过 ✅ |
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [全面测试报告](./docs/FULL_TEST_REPORT.md)
|
|||
|
|
- [E2E 测试报告](./docs/ADMIN_TEST_REPORT.md)
|
|||
|
|
- [测试汇总](./docs/SUMMARY.md)
|