Files
etf/archive/tests/test_trading_calendar.py
aszerW c905230a40 refactor(archive): move unused modules to archive/
Archive legacy framework and utility modules that are no longer
referenced by the active core (datasource/ and rotation/):

- framework/ -> archive/framework/
- framework_v2/ -> archive/framework_v2/
- strategies/ -> archive/strategies/
- config/ -> archive/config/
- visualization/ -> archive/visualization/
- scripts/ -> archive/scripts/
- tests/ -> archive/tests/
- run_rotation.py, run_us_rotation.py -> archive/single_files/
- compare_*.py, test_api_dates.py -> archive/single_files/
2026-06-03 23:41:46 +08:00

165 lines
5.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
测试交易日历 API
"""
import sys
from pathlib import Path
import requests
# Flask 服务地址
FLASK_API_URL = "http://localhost:80"
def test_calendar_api():
"""测试交易日历 API"""
print("\n" + "="*80)
print("📅 交易日历 API 测试")
print("="*80)
# 测试 1: A 股
print("\n[1] 测试 A 股交易日历...")
url = f"{FLASK_API_URL}/api/v1/trading-calendar"
params = {"market": "A", "start": "2024-01-01", "end": "2024-01-31"}
try:
response = requests.get(url, params=params, timeout=10)
if response.status_code == 200:
data = response.json()
print(f" ✅ 成功: {data['count']} 个交易日")
print(f" 市场: {data['market']}")
print(f" 交易所: {data['exchange']}")
print(f" 日期范围: {data['start']} ~ {data['end']}")
print(f" 前5个交易日: {data['trading_dates'][:5]}")
else:
print(f" ❌ 失败: {response.status_code}")
print(f" 响应: {response.json()}")
except Exception as e:
print(f" ❌ 异常: {e}")
# 测试 2: 美股
print("\n[2] 测试美股交易日历...")
params = {"market": "US", "start": "2024-01-01", "end": "2024-01-31"}
try:
response = requests.get(url, params=params, timeout=10)
if response.status_code == 200:
data = response.json()
print(f" ✅ 成功: {data['count']} 个交易日")
print(f" 市场: {data['market']}")
print(f" 交易所: {data['exchange']}")
print(f" 前5个交易日: {data['trading_dates'][:5]}")
else:
print(f" ❌ 失败: {response.status_code}")
print(f" 响应: {response.json()}")
except Exception as e:
print(f" ❌ 异常: {e}")
# 测试 3: 港股
print("\n[3] 测试港股交易日历...")
params = {"market": "HK", "start": "2024-01-01", "end": "2024-01-31"}
try:
response = requests.get(url, params=params, timeout=10)
if response.status_code == 200:
data = response.json()
print(f" ✅ 成功: {data['count']} 个交易日")
print(f" 市场: {data['market']}")
print(f" 交易所: {data['exchange']}")
print(f" 前5个交易日: {data['trading_dates'][:5]}")
else:
print(f" ❌ 失败: {response.status_code}")
print(f" 响应: {response.json()}")
except Exception as e:
print(f" ❌ 异常: {e}")
# 测试 4: 日历信息
print("\n[4] 测试日历信息...")
url_info = f"{FLASK_API_URL}/api/v1/calendar/info"
try:
response = requests.get(url_info, timeout=10)
if response.status_code == 200:
data = response.json()
print(f" ✅ 成功")
print(f" 支持的市场:")
for market, info in data.get('supported_markets', {}).items():
print(f" {market}: {info['name']} ({info['method']})")
print(f" pandas_market_calendars: {'✅ 已安装' if data.get('pandas_market_calendars_installed') else '❌ 未安装'}")
else:
print(f" ❌ 失败: {response.status_code}")
except Exception as e:
print(f" ❌ 异常: {e}")
def test_local_fetcher():
"""测试本地 UniversalDataFetcher"""
print("\n" + "="*80)
print("🧪 本地 UniversalDataFetcher 测试")
print("="*80)
sys.path.insert(0, str(Path(__file__).parent.parent))
try:
from datasource.universal_fetcher import UniversalDataFetcher
fetcher = UniversalDataFetcher()
# 测试 A 股
print("\n[1] A 股交易日历 (2024年)...")
cal_a = fetcher.get_trading_calendar('A', '2024-01-01', '2024-12-31')
print(f"{len(cal_a)} 个交易日")
print(f" 前5天: {list(cal_a[:5])}")
# 测试美股
print("\n[2] 美股交易日历 (2024年)...")
cal_us = fetcher.get_trading_calendar('US', '2024-01-01', '2024-12-31')
print(f"{len(cal_us)} 个交易日")
print(f" 前5天: {list(cal_us[:5])}")
# 测试港股
print("\n[3] 港股交易日历 (2024年)...")
cal_hk = fetcher.get_trading_calendar('HK', '2024-01-01', '2024-12-31')
print(f"{len(cal_hk)} 个交易日")
print(f" 前5天: {list(cal_hk[:5])}")
# 日历信息
print("\n[4] 日历支持信息...")
info = fetcher.get_calendar_info()
print(f" ✅ 支持 {len(info['supported_markets'])} 个市场")
except Exception as e:
print(f" ❌ 失败: {e}")
import traceback
traceback.print_exc()
def main():
print("\n" + "="*80)
print("📅 交易日历功能测试")
print("="*80)
# 测试 1: 本地 fetcher
test_local_fetcher()
# 测试 2: Flask API如果服务在运行
print("\n" + "="*80)
print("🌐 测试 Flask API 端点")
print("="*80)
print(f"\nAPI 地址: {FLASK_API_URL}")
print("注意: 需要 Flask 服务正在运行")
try:
response = requests.get(f"{FLASK_API_URL}/health", timeout=3)
if response.status_code == 200:
print("✅ Flask 服务可访问")
test_calendar_api()
else:
print(f"⚠️ Flask 服务返回 {response.status_code},跳过 API 测试")
except:
print("⚠️ Flask 服务未运行,跳过 API 测试")
print("\n" + "="*80)
print("✅ 测试完成")
print("="*80)
if __name__ == "__main__":
main()