60 lines
1.9 KiB
Python
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()
|