本文档介绍如何使用独立的测试环境来验证 TradingAgents-CN 的部署,而不影响现有的生产数据。
- 保留现有数据:生产数据卷不受影响
- 快速切换:可以随时在生产和测试环境之间切换
- 安全测试:测试失败不会影响生产环境
- 易于清理:测试完成后可以一键清理
| 项目 | 生产环境 | 测试环境 |
|---|---|---|
| Docker Compose 文件 | docker-compose.hub.yml |
docker-compose.hub.test.yml |
| 容器名称 | tradingagents-* |
tradingagents-*-test |
| 数据卷名称 | tradingagents_mongodb_datatradingagents_redis_data |
tradingagents_test_mongodb_datatradingagents_test_redis_data |
| 网络名称 | tradingagents-network |
tradingagents-test-network |
| 日志目录 | logs/ |
logs-test/ |
| 配置目录 | config/ |
config-test/ |
| 数据目录 | data/ |
data-test/ |
| 端口 | 3000, 8000, 27017, 6379 | 3000, 8000, 27017, 6379 |
注意:测试环境和生产环境使用相同的端口,因此不能同时运行。
# 停止生产环境,启动测试环境
.\scripts\switch_to_test_env.ps1执行内容:
- 停止生产容器(
docker-compose.hub.yml down) - 启动测试容器(
docker-compose.hub.test.yml up -d) - 创建全新的测试数据卷
预期输出:
======================================================================
[OK] Test environment started!
======================================================================
[INFO] Test containers:
- tradingagents-mongodb-test
- tradingagents-redis-test
- tradingagents-backend-test
- tradingagents-frontend-test
[INFO] Test data volumes:
- tradingagents_test_mongodb_data
- tradingagents_test_redis_data
[INFO] Access URLs:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
docker ps预期输出:
CONTAINER ID IMAGE STATUS PORTS NAMES
xxxxxxxxxx hsliup/tradingagents-frontend:latest Up 2 minutes 0.0.0.0:3000->80/tcp tradingagents-frontend-test
xxxxxxxxxx hsliup/tradingagents-backend:latest Up 2 minutes 0.0.0.0:8000->8000/tcp tradingagents-backend-test
xxxxxxxxxx redis:7-alpine Up 2 minutes 0.0.0.0:6379->6379/tcp tradingagents-redis-test
xxxxxxxxxx mongo:4.4 Up 2 minutes 0.0.0.0:27017->27017/tcp tradingagents-mongodb-test
docker volume ls | Select-String "tradingagents"预期输出:
local tradingagents_mongodb_data # 生产数据卷(保留)
local tradingagents_redis_data # 生产数据卷(保留)
local tradingagents_test_mongodb_data # 测试数据卷(新建)
local tradingagents_test_redis_data # 测试数据卷(新建)
docker logs -f tradingagents-backend-test预期输出:
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
打开浏览器访问:http://localhost:3000
预期结果:
- 前端页面正常加载
- 可以注册新用户(测试环境是全新数据库)
- 可以配置数据源(Tushare/AKShare/BaoStock)
- 可以测试各项功能
目的:验证新用户首次部署的体验
步骤:
- 切换到测试环境(全新数据库)
- 访问前端,注册新用户
- 配置 Tushare Token
- 启用数据同步任务
- 等待数据同步完成
- 测试股票查询、分析等功能
验证点:
- ✅ 用户注册流程是否顺畅
- ✅ 数据源配置是否正确
- ✅ 定时任务是否正常启动
- ✅ 数据同步是否成功
- ✅ 前端功能是否正常
目的:验证在某些 API 不可用时的表现
步骤:
- 切换到测试环境
- 不配置 Tushare Token(模拟无 Token 场景)
- 只启用 AKShare 数据源
- 测试系统是否能正常运行
验证点:
- ✅ 系统是否能在缺少 Tushare 的情况下运行
- ✅ AKShare 数据同步是否正常
- ✅ 错误提示是否友好
- ✅ 日志是否清晰
目的:验证错误配置的处理
步骤:
- 切换到测试环境
- 故意配置错误的 Tushare Token
- 观察系统行为
验证点:
- ✅ 系统是否能检测到错误配置
- ✅ 错误提示是否清晰
- ✅ 系统是否能继续运行(不崩溃)
测试完成后,切换回生产环境:
# 停止测试环境,启动生产环境
.\scripts\switch_to_prod_env.ps1执行内容:
- 停止测试容器(
docker-compose.hub.test.yml down) - 启动生产容器(
docker-compose.hub.yml up -d) - 恢复使用生产数据卷
预期输出:
======================================================================
[OK] Production environment started!
======================================================================
[INFO] Production containers:
- tradingagents-mongodb
- tradingagents-redis
- tradingagents-backend
- tradingagents-frontend
[INFO] Production data volumes:
- tradingagents_mongodb_data
- tradingagents_redis_data
如果测试完成,不再需要测试数据:
# 清理测试容器、数据卷和目录
.\scripts\cleanup_test_env.ps1执行内容:
- 停止并删除测试容器
- 删除测试数据卷
- 删除测试目录(
logs-test/,config-test/,data-test/)
警告:此操作会删除所有测试数据,无法恢复!
如果您不想使用脚本,也可以手动操作:
# 停止生产环境
docker-compose -f docker-compose.hub.yml down
# 启动测试环境
docker-compose -f docker-compose.hub.test.yml up -d
# 查看日志
docker logs -f tradingagents-backend-test# 停止测试环境
docker-compose -f docker-compose.hub.test.yml down
# 启动生产环境
docker-compose -f docker-compose.hub.yml up -d
# 查看日志
docker logs -f tradingagents-backend# 停止并删除测试容器和数据卷
docker-compose -f docker-compose.hub.test.yml down -v
# 删除测试目录
Remove-Item -Path logs-test -Recurse -Force
Remove-Item -Path config-test -Recurse -Force
Remove-Item -Path data-test -Recurse -ForceA: 不可以。因为它们使用相同的端口(3000, 8000, 27017, 6379),会发生端口冲突。
A: 不会。测试环境使用独立的数据卷(tradingagents_test_*),与生产数据卷(tradingagents_*)完全隔离。
A: 使用以下命令:
# 后端日志
docker logs -f tradingagents-backend-test
# 前端日志
docker logs -f tradingagents-frontend-test
# MongoDB 日志
docker logs -f tradingagents-mongodb-test
# Redis 日志
docker logs -f tradingagents-redis-testA:
- 数据卷:Docker 管理的卷(
tradingagents_test_mongodb_data,tradingagents_test_redis_data) - 日志文件:
logs-test/目录 - 配置文件:
config-test/目录 - 数据文件:
data-test/目录
A: 使用以下命令:
# 停止测试容器
docker-compose -f docker-compose.hub.test.yml down
# 删除测试数据卷
docker volume rm tradingagents_test_mongodb_data
docker volume rm tradingagents_test_redis_data或者使用清理脚本:
.\scripts\cleanup_test_env.ps1使用独立测试环境的优势:
✅ 安全:不影响生产数据
✅ 灵活:可以随时切换
✅ 完整:完全模拟真实部署
✅ 易用:一键启动和清理
推荐在以下场景使用测试环境:
- 🧪 测试新功能
- 🔧 验证配置更改
- 📚 编写文档和教程
- 🐛 复现和修复 Bug
- 🎓 培训和演示
祝测试顺利! 🎉