test_integration.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. """
  2. 集成测试
  3. 端到端测试CYB50-Pro主控引擎
  4. """
  5. import unittest
  6. from datetime import datetime
  7. import numpy as np
  8. import pandas as pd
  9. import sys
  10. import os
  11. sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
  12. from core.engine import CYB50ProEngine
  13. class TestCYB50ProEngine(unittest.TestCase):
  14. """测试CYB50-Pro主控引擎"""
  15. def setUp(self):
  16. self.engine = CYB50ProEngine()
  17. self.price_data = self._generate_test_data()
  18. def _generate_test_data(self, days=100):
  19. """生成测试数据"""
  20. np.random.seed(42)
  21. dates = pd.date_range(end=datetime.now(), periods=days, freq='D')
  22. returns = np.random.normal(0.001, 0.015, days)
  23. prices = 100 * np.exp(np.cumsum(returns))
  24. return pd.DataFrame({
  25. 'open': prices * (1 + np.random.normal(0, 0.001, days)),
  26. 'high': prices * (1 + abs(np.random.normal(0, 0.01, days))),
  27. 'low': prices * (1 - abs(np.random.normal(0, 0.01, days))),
  28. 'close': prices,
  29. 'volume': np.random.lognormal(15, 0.5, days)
  30. }, index=dates)
  31. def test_engine_initialization(self):
  32. """测试引擎初始化"""
  33. self.assertIsNotNone(self.engine)
  34. self.assertIsNotNone(self.engine.ecosystem_fusion)
  35. self.assertIsNotNone(self.engine.signal_fusion)
  36. self.assertIsNotNone(self.engine.agent_router)
  37. self.assertIsNotNone(self.engine.risk_manager)
  38. self.assertEqual(len(self.engine.agents), 3)
  39. def test_run_cycle(self):
  40. """测试完整运行周期"""
  41. result = self.engine.run_cycle(
  42. price_data=self.price_data,
  43. account_value=1_000_000
  44. )
  45. self.assertIsInstance(result, dict)
  46. self.assertIn('timestamp', result)
  47. self.assertIn('ecosystem', result)
  48. self.assertIn('routing', result)
  49. self.assertIn('signals', result)
  50. def test_ecosystem_detection(self):
  51. """测试生态识别集成"""
  52. result = self.engine.run_cycle(
  53. price_data=self.price_data,
  54. account_value=1_000_000
  55. )
  56. ecosystem = result.get('ecosystem')
  57. self.assertIsNotNone(ecosystem)
  58. self.assertIn('macro', ecosystem)
  59. self.assertIn('meso', ecosystem)
  60. self.assertIn('micro', ecosystem)
  61. def test_routing_decision(self):
  62. """测试智能体路由集成"""
  63. result = self.engine.run_cycle(
  64. price_data=self.price_data,
  65. account_value=1_000_000
  66. )
  67. routing = result.get('routing')
  68. self.assertIsNotNone(routing)
  69. self.assertIn('active_agents', routing)
  70. self.assertIn('weights', routing)
  71. def test_risk_check(self):
  72. """测试风险管理集成"""
  73. result = self.engine.run_cycle(
  74. price_data=self.price_data,
  75. account_value=1_000_000
  76. )
  77. # 如果有信号,检查风险管理
  78. if result.get('executed'):
  79. risk_check = result.get('risk_check')
  80. self.assertIsNotNone(risk_check)
  81. self.assertIn('can_trade', risk_check)
  82. self.assertIn('risk_level', risk_check)
  83. def test_engine_start_stop(self):
  84. """测试引擎启动停止"""
  85. self.engine.start()
  86. self.assertTrue(self.engine.is_running)
  87. self.engine.stop()
  88. self.assertFalse(self.engine.is_running)
  89. def test_get_status(self):
  90. """测试获取引擎状态"""
  91. status = self.engine.get_status()
  92. self.assertIsInstance(status, dict)
  93. self.assertIn('is_running', status)
  94. self.assertIn('agents', status)
  95. self.assertIn('risk_summary', status)
  96. if __name__ == '__main__':
  97. unittest.main()