You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lxy 45653bb6e4
feat: 初始化版本代码
2 months ago
..
README.md feat: 初始化版本代码 2 months ago
test_amazing_data.py feat: 初始化版本代码 2 months ago
test_api.py feat: 初始化版本代码 2 months ago
test_kline_v2_2.py feat: 初始化版本代码 2 months ago
test_services.py feat: 初始化版本代码 2 months ago

README.md

后端测试套件

测试文件说明

  • test_api.py - API 端点集成测试
  • test_services.py - 服务层单元测试

运行测试

运行所有测试

cd backend
pytest

运行特定测试文件

pytest tests/test_services.py -v

运行特定测试类

pytest tests/test_services.py::TestAuthService -v

运行特定测试函数

pytest tests/test_services.py::TestAuthService::test_password_hashing -v

生成覆盖率报告

pytest --cov=app --cov-report=html
# 报告生成在 htmlcov/index.html

运行测试并显示输出

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 来模拟数据库连接和外部依赖:

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