Co-authored-by: maghdam <63883156+maghdam@users.noreply.github.com>
49 lines
1.8 KiB
Python
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()
|