# 后端测试套件 ## 测试文件说明 - `test_api.py` - API 端点集成测试 - `test_services.py` - 服务层单元测试 ## 运行测试 ### 运行所有测试 ```bash cd backend pytest ``` ### 运行特定测试文件 ```bash pytest tests/test_services.py -v ``` ### 运行特定测试类 ```bash pytest tests/test_services.py::TestAuthService -v ``` ### 运行特定测试函数 ```bash pytest tests/test_services.py::TestAuthService::test_password_hashing -v ``` ### 生成覆盖率报告 ```bash pytest --cov=app --cov-report=html # 报告生成在 htmlcov/index.html ``` ### 运行测试并显示输出 ```bash pytest -s -v ``` ## 测试覆盖 ### 认证服务 (auth_service.py) - ✅ 密码哈希 - ✅ 密码验证 - ✅ 访问令牌创建 - ✅ 刷新令牌创建 - ✅ 令牌解码 - ✅ API Key 生成 ### K 线数据服务 (kline_service.py) - ✅ 获取 K 线数据 - ✅ 获取最新 K 线 - ✅ 获取品种列表 - ✅ 获取周期列表 ### 告警服务 (alert_service.py) - ✅ 创建告警 - ✅ 获取用户告警 - ✅ 更新告警 - ✅ 删除告警 ### 订阅服务 (subscription_service.py) - ✅ 创建订阅 - ✅ 获取用户订阅 - ✅ 取消订阅 ### API 端点 - ✅ 健康检查 - ✅ 认证端点 - ✅ K 线数据端点 - ✅ 用户管理端点 - ✅ 告警管理端点 - ✅ 订阅管理端点 ## Mock 说明 测试使用 `unittest.mock` 来模拟数据库连接和外部依赖: ```python from unittest.mock import Mock, patch, MagicMock @patch('app.services.kline_service.TimescaleSessionLocal') def test_get_kline_data(self, mock_session): mock_db = MagicMock() mock_session.return_value.__enter__.return_value = mock_db # ... 测试代码 ``` ## 注意事项 1. 测试数据库使用 SQLite 内存数据库,不影响生产数据 2. 所有测试都是独立的,可以单独运行 3. 测试数据在测试结束后自动清理 4. 运行测试前确保已安装测试依赖:`pip install -r requirements.txt`