🗄️ 测试数据库要求

❌ 问题:测试失败 - 数据库连接错误

从测试输出可以看到,很多测试失败是因为数据库连接问题:

ERROR at setup of TestTokenBillingService.test_balance_negative_remaining
tests\unit\test_token_billing.py:31: in test_user
    user = await user_service.create_user(user_data)
private\platform\src\users\service.py:163: in create_user
    await session.execute(insert_sql, {**params, "nickname": nickname})

🔍 问题原因

单元测试需要数据库连接,但本地环境可能:

  1. 没有运行PostgreSQL数据库
  2. 没有配置数据库连接字符串
  3. 数据库连接配置不正确

✅ 解决方案

方案1: 使用GitHub Actions查看错误(推荐)

由于本地需要完整的数据库环境,建议直接查看GitHub Actions中的测试错误:

  1. 访问工作流运行页面

    https://github.com/zenglx1978/mbe-monorepo/actions
    
  2. 点击失败的运行

    • 找到 "Run Tests (unit)" 失败的运行
    • 点击查看详细日志
  3. 查看错误信息

    • GitHub Actions会自动配置数据库
    • 可以看到真实的测试错误

方案2: 本地配置数据库(用于开发)

如果需要本地运行测试:

步骤1: 安装PostgreSQL

  1. 下载PostgreSQL

  2. 启动PostgreSQL服务

    • 确保PostgreSQL服务正在运行

步骤2: 创建测试数据库

CREATE DATABASE mbe_test;
CREATE USER mbe WITH PASSWORD 'test_password';
GRANT ALL PRIVILEGES ON DATABASE mbe_test TO mbe;

步骤3: 配置环境变量

# 设置数据库连接字符串
$env:DATABASE_URL = "postgresql+asyncpg://mbe:test_password@localhost:5432/mbe_test"
$env:REDIS_URL = "redis://localhost:6379/15"
$env:PYTHONPATH = "shared/src;private/core/src;private/platform/src"

步骤4: 运行测试

python -m pytest tests/unit/ -v -m unit

方案3: 使用Docker运行数据库

如果已安装Docker:

# 启动PostgreSQL容器
docker run -d \
  --name mbe-postgres-test \
  -e POSTGRES_DB=mbe_test \
  -e POSTGRES_USER=mbe \
  -e POSTGRES_PASSWORD=test_password \
  -p 5432:5432 \
  postgres:16-alpine

# 启动Redis容器
docker run -d \
  --name mbe-redis-test \
  -p 6379:6379 \
  redis:7-alpine

# 设置环境变量
$env:DATABASE_URL = "postgresql+asyncpg://mbe:test_password@localhost:5432/mbe_test"
$env:REDIS_URL = "redis://localhost:6379/15"

# 运行测试
python -m pytest tests/unit/ -v -m unit

📊 测试结果分析

成功的测试

  • test_auth_service.py - 所有测试通过(6个)
  • test_engine.py - 大部分测试通过(74个通过,1个失败)
  • test_utils.py - 所有测试通过(24个)
  • test_user_models.py - 所有测试通过(6个)

失败的测试

  • test_token_billing.py - 所有测试失败(22个)- 数据库连接问题
  • test_user_service.py - 大部分测试失败(30个失败,9个通过)- 数据库连接问题
  • test_engine.py - 1个测试失败

🎯 建议

对于CI/CD工作流

  • GitHub Actions会自动配置数据库
  • 直接查看GitHub Actions中的测试错误更准确
  • 不需要本地配置数据库

对于本地开发

  • 如果需要频繁运行测试,配置本地数据库
  • 或者使用Docker快速启动测试数据库
  • 或者只运行不需要数据库的测试

🔍 查看GitHub Actions中的错误

步骤1: 访问工作流运行

访问:https://github.com/zenglx1978/mbe-monorepo/actions

步骤2: 点击失败的运行

找到 "Run Tests (unit)" 失败的运行,点击查看。

步骤3: 查看详细错误

  1. 点击 "Run Tests (unit)" 步骤
  2. 展开测试输出
  3. 找到失败的测试用例
  4. 查看错误堆栈信息

📚 相关文档


建议:直接查看GitHub Actions中的测试错误,那里有完整的数据库环境!