real_trader/tests/test_real_trader.py
2025-01-05 22:31:17 +08:00

60 lines
1.9 KiB
Python

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()