feat: make real_trader work

This commit is contained in:
zhiyong 2025-01-05 22:31:17 +08:00
parent 1c83ae754d
commit c0750cdc87
4 changed files with 87 additions and 8 deletions

View File

@ -5,3 +5,6 @@ python 版本: 3.6.8-win32
## 依赖安装 ## 依赖安装
pip install -r requirements.txt pip install -r requirements.txt
## 运行准备
在环境变量中设置ACCOUNT和PASSWORD

View File

@ -72,12 +72,28 @@ if __name__ == "__main__":
balance = trader.get_balance() balance = trader.get_balance()
print("账户余额信息:", balance) print("账户余额信息:", balance)
# 获取持仓信息
positions = trader.get_positions()
print("持仓信息:", positions)
# 获取当日成交
today_trades = trader.get_today_trades()
print("当日成交:", today_trades)
# 获取当日委托
today_entrust = trader.get_today_entrust()
print("当日委托:", today_entrust)
# 刷新数据
trader.refresh()
print("数据已刷新")
except Exception as e: except Exception as e:
print("发生错误:", str(e)) print("发生错误:", str(e))
finally: # finally:
# 确保退出登录 # # 确保退出登录
try: # try:
trader.logout() # trader.logout()
print("已安全退出!") # print("已安全退出!")
except: # except:
pass # pass

1
tests/__init__.py Normal file
View File

@ -0,0 +1 @@

59
tests/test_real_trader.py Normal file
View File

@ -0,0 +1,59 @@
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()