feat: make real_trader work
This commit is contained in:
parent
1c83ae754d
commit
c0750cdc87
@ -5,3 +5,6 @@ python 版本: 3.6.8-win32
|
|||||||
|
|
||||||
## 依赖安装
|
## 依赖安装
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
## 运行准备
|
||||||
|
在环境变量中设置ACCOUNT和PASSWORD
|
@ -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
1
tests/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
59
tests/test_real_trader.py
Normal file
59
tests/test_real_trader.py
Normal 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()
|
Loading…
x
Reference in New Issue
Block a user