#!/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()