🗄️ 测试数据库要求
❌ 问题:测试失败 - 数据库连接错误
从测试输出可以看到,很多测试失败是因为数据库连接问题:
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})
🔍 问题原因
单元测试需要数据库连接,但本地环境可能:
- 没有运行PostgreSQL数据库
- 没有配置数据库连接字符串
- 数据库连接配置不正确
✅ 解决方案
方案1: 使用GitHub Actions查看错误(推荐)
由于本地需要完整的数据库环境,建议直接查看GitHub Actions中的测试错误:
访问工作流运行页面
https://github.com/zenglx1978/mbe-monorepo/actions点击失败的运行
- 找到 "Run Tests (unit)" 失败的运行
- 点击查看详细日志
查看错误信息
- GitHub Actions会自动配置数据库
- 可以看到真实的测试错误
方案2: 本地配置数据库(用于开发)
如果需要本地运行测试:
步骤1: 安装PostgreSQL
下载PostgreSQL
启动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: 查看详细错误
- 点击 "Run Tests (unit)" 步骤
- 展开测试输出
- 找到失败的测试用例
- 查看错误堆栈信息
📚 相关文档
建议:直接查看GitHub Actions中的测试错误,那里有完整的数据库环境!