一个集成了 API、Web UI 和移动端自动化测试的完整测试框架。
- 语言:TypeScript
- API 测试:Supertest + Jest
- Web UI 测试:Playwright
- 移动端测试:Appium + WebdriverIO
- 测试框架:Jest
test-automation-framework/
├── src/
│ ├── api/ # API 测试相关代码
│ ├── web/ # Web UI 测试相关代码
│ ├── mobile/ # 移动端测试相关代码
│ ├── common/ # 通用工具和配置
│ └── data/ # 测试数据
├── tests/ # 测试用例
├── reports/ # 测试报告
└── README.md
# 克隆项目
git clone <repository-url>
cd test-automation-framework
# 安装依赖
npm install
# 安装 Playwright 浏览器
npx playwright install
# 配置环境变量
cp .env.example .env
# 运行所有测试
npm test
# 运行 API 测试
npm run test:api
# 运行 Web UI 测试
npm run test:web
# 运行移动端测试
npm run test:mobile
# 运行测试并生成覆盖率报告
npm run test:coverage
describe('User API Tests', () => {
it('should login successfully', async () => {
// 测试用例实现
});
});
describe('Login Page Tests', () => {
it('should login with valid credentials', async () => {
// 测试用例实现
});
});
describe('Mobile Login Tests', () => {
it('should login on mobile app', async () => {
// 测试用例实现
});
});
创建 .env
文件:
API_BASE_URL=http://localhost:3000
WEB_BASE_URL=http://localhost:8080
MOBILE_APP_PATH=/path/to/app.apk
jest.config.js 主要配置项:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
setupFilesAfterEnv: ['./jest.setup.ts']
}
- 在
src/api/types
中定义接口类型 - 在
src/api
中创建新的 API 类 - 在
tests/api
中添加测试用例
- 在
src/web/pages
中创建页面对象 - 在
src/web/components
中创建可重用组件 - 在
tests/web
中添加测试用例
- 在
src/mobile/screens
中创建页面对象 - 在
src/mobile/components
中创建可重用组件 - 在
tests/mobile
中添加测试用例
- 使用 Page Object 模式组织 UI 测试代码
- 保持测试用例独立性
- 使用环境变量管理配置
- 实现测试数据清理机制
- 添加详细的测试报告
- 使用 CI/CD 集成测试
- 确保已安装 Appium 服务器
- 配置正确的移动设备或模拟器
- 设置正确的 APP 路径
npm install -g appium
appium driver install uiautomator2
在 jest.config.js 中配置:
module.exports = {
maxWorkers: 4,
maxConcurrency: 2
}
- 使用工厂模式创建测试数据
- 实现测试数据清理机制
- 使用独立的测试数据库
# 生成 HTML 报告
npm run test:report
# 生成覆盖率报告
npm run test:coverage
name: Test Automation
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 提交变更 (
git commit -m 'Add amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 创建 Pull Request
# 使用 VS Code 调试配置
{
"type": "node",
"request": "launch",
"name": "Debug API Tests",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["--runInBand", "--testPathPattern=tests/api"],
"console": "integratedTerminal"
}
# 开启 Playwright 调试模式
PWDEBUG=1 npm run test:web
# 开启 Appium 调试日志
APPIUM_LOG_LEVEL=debug npm run test:mobile
MIT