Files
AlphaFlow-MT5-ML-DL-Trading…/tests/test_multi_bar.py
T

49 lines
1.8 KiB
Python

import sys
from unittest.mock import MagicMock
# Mock dependencies before importing TradingApp
sys.modules['MetaTrader5'] = MagicMock()
sys.modules['pandas'] = MagicMock()
sys.modules['numpy'] = MagicMock()
sys.modules['ta'] = MagicMock()
sys.modules['joblib'] = MagicMock()
import unittest
from unittest.mock import patch
from live_trading.multi_bar import TradingApp
class TestMultiBarTradingApp(unittest.TestCase):
@patch('live_trading.multi_bar.joblib.load')
@patch('live_trading.multi_bar.log_and_print')
def test_load_pipeline_exception_handling(self, mock_log_and_print, mock_joblib_load):
# Arrange
app = TradingApp(symbol="EURUSD", lot_size=0.01, magic_number=234003)
mock_joblib_load.side_effect = Exception("Mocked joblib load error")
# Act
app.load_pipeline("dummy_path.pkl")
# Assert
self.assertIsNone(app.pipeline)
mock_joblib_load.assert_called_once_with("dummy_path.pkl")
mock_log_and_print.assert_called_once_with("Failed to load pipeline: Mocked joblib load error", is_error=True)
@patch('live_trading.multi_bar.joblib.load')
@patch('live_trading.multi_bar.log_and_print')
def test_load_pipeline_success(self, mock_log_and_print, mock_joblib_load):
# Arrange
app = TradingApp(symbol="EURUSD", lot_size=0.01, magic_number=234003)
mock_pipeline = "mock_pipeline_instance"
mock_joblib_load.return_value = mock_pipeline
# Act
app.load_pipeline("valid_path.pkl")
# Assert
self.assertEqual(app.pipeline, mock_pipeline)
mock_joblib_load.assert_called_once_with("valid_path.pkl")
mock_log_and_print.assert_called_once_with("Pipeline loaded from valid_path.pkl")
if __name__ == '__main__':
unittest.main()