import unittest from unittest.mock import patch, MagicMock import os import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from src.real_trader import RealTrader class TestRealTrader(unittest.TestCase): def setUp(self): self.trader = RealTrader() def test_init(self): """测试初始化""" self.assertEqual(self.trader._exe_path, r"C:\\ths\\xiadan.exe") @patch('easytrader.use') def test_login(self, mock_use): """测试登录功能""" mock_trader = MagicMock() mock_use.return_value = mock_trader self.trader.login() mock_use.assert_called_once_with("ths5.19") mock_trader.enable_type_keys_for_editor.assert_called_once() mock_trader.prepare.assert_called_once_with( user=self.trader._ACCOUNT, password=self.trader._PASSWORD, exe_path=self.trader._exe_path ) @patch('easytrader.use') def test_get_balance(self, mock_use): """测试获取余额""" mock_trader = MagicMock() mock_use.return_value = mock_trader expected_balance = {'资金余额': 1000} mock_trader.balance = expected_balance self.trader.login() balance = self.trader.get_balance() self.assertEqual(balance, expected_balance) @patch('easytrader.use') def test_get_positions(self, mock_use): """测试获取持仓""" mock_trader = MagicMock() mock_use.return_value = mock_trader expected_positions = [{'证券代码': '000001', '证券名称': '平安银行'}] mock_trader.position = expected_positions self.trader.login() positions = self.trader.get_positions() self.assertEqual(positions, expected_positions) if __name__ == '__main__': unittest.main()