You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AlphaFutures/test_mock_symbols.py

82 lines
2.8 KiB

#!/usr/bin/env python3
# 测试TQSDK适配器的_get_mock_all_symbols方法
import os
import sys
# 确保能导入项目模块
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from qihuo_analyzer.data.api_adapters.tqsdk_adapter import TqSdkAdapter
def test_mock_all_symbols():
"""测试_get_mock_all_symbols方法是否返回exchange_map中映射的所有品种"""
print("=== 测试TQSDK适配器_get_mock_all_symbols方法 ===")
# 创建TQSDK适配器实例
adapter = TqSdkAdapter()
# 获取模拟品种列表
mock_symbols = adapter._get_mock_all_symbols()
print(f"\n1. 测试结果:")
print(f"模拟品种列表长度: {len(mock_symbols)}")
print(f"exchange_map长度: {len(adapter.exchange_map)}")
print(f"两者长度是否一致: {len(mock_symbols) == len(adapter.exchange_map)}")
print("\n2. 模拟品种列表:")
print(sorted(mock_symbols))
print("\n3. exchange_map中的品种:")
print(sorted(adapter.exchange_map.keys()))
# 验证所有exchange_map中的品种都在模拟列表中
print("\n4. 验证所有exchange_map中的品种都在模拟列表中:")
missing_symbols = []
for product_code in adapter.exchange_map:
expected_symbol = f"{product_code}2603"
if expected_symbol not in mock_symbols:
missing_symbols.append(expected_symbol)
if missing_symbols:
print(f"✗ 缺失的品种: {missing_symbols}")
else:
print("✓ 所有exchange_map中的品种都在模拟列表中")
# 验证模拟列表中的品种都在exchange_map中
print("\n5. 验证模拟列表中的品种都在exchange_map中:")
invalid_symbols = []
for symbol in mock_symbols:
# 提取品种代码
if len(symbol) == 5:
# 3字符品种代码
product_code = symbol[:3]
elif len(symbol) == 4:
# 2字符或1字符品种代码
# 先尝试2字符
product_code = symbol[:2]
if product_code not in adapter.exchange_map:
# 尝试1字符
product_code = symbol[:1]
else:
product_code = symbol[:2]
if product_code not in adapter.exchange_map:
invalid_symbols.append(symbol)
if invalid_symbols:
print(f"✗ 无效的品种: {invalid_symbols}")
else:
print("✓ 模拟列表中的所有品种都在exchange_map中")
# 测试get_all_symbols方法
print("\n6. 测试get_all_symbols方法:")
all_symbols = adapter.get_all_symbols()
print(f"get_all_symbols返回长度: {len(all_symbols)}")
print(f"与模拟列表长度是否一致: {len(all_symbols) == len(mock_symbols)}")
print("\n=== 测试完成 ===")
if __name__ == "__main__":
test_mock_all_symbols()