""" 测试 /api/events 接口的分页和交易日筛选功能 """ import requests from datetime import datetime, timedelta # 接口地址 BASE_URL = "http://localhost:5001" EVENTS_API = f"{BASE_URL}/api/events" def test_pagination(): """测试分页功能""" print("\n=== 测试分页功能 ===") # 测试第一页 params = { 'page': 1, 'per_page': 5 } response = requests.get(EVENTS_API, params=params) data = response.json() if data.get('success'): pagination = data['data']['pagination'] print(f"✓ 第一页请求成功") print(f" - 当前页: {pagination['page']}") print(f" - 每页数量: {pagination['per_page']}") print(f" - 总记录数: {pagination['total']}") print(f" - 总页数: {pagination['pages']}") print(f" - 是否有下一页: {pagination['has_next']}") print(f" - 本页事件数: {len(data['data']['events'])}") # 测试第二页 if pagination['has_next']: params['page'] = 2 response = requests.get(EVENTS_API, params=params) data = response.json() if data.get('success'): print(f"✓ 第二页请求成功,返回 {len(data['data']['events'])} 个事件") else: print(f"✗ 请求失败: {data.get('error')}") def test_trading_day_filter(): """测试交易日筛选功能""" print("\n=== 测试交易日筛选功能 ===") # 测试使用 YYYY-MM-DD 格式 tday = "2024-11-01" # 使用一个交易日 params = { 'tday': tday, 'per_page': 10 } response = requests.get(EVENTS_API, params=params) data = response.json() if data.get('success'): print(f"✓ 交易日筛选成功 (格式: YYYY-MM-DD)") print(f" - 交易日: {tday}") print(f" - 筛选到的事件数: {len(data['data']['events'])}") print(f" - 总记录数: {data['data']['pagination']['total']}") if data['data']['events']: print(f" - 第一个事件创建时间: {data['data']['events'][0]['created_at']}") # 检查 applied_filters filters = data['data']['filters']['applied_filters'] if 'tday' in filters: print(f" - 应用的交易日筛选: {filters['tday']}") else: print(f"✗ 请求失败: {data.get('error')}") # 测试使用 YYYY/M/D 格式 tday2 = "2024/11/1" params['tday'] = tday2 response = requests.get(EVENTS_API, params=params) data = response.json() if data.get('success'): print(f"✓ 交易日筛选成功 (格式: YYYY/M/D)") print(f" - 交易日: {tday2}") print(f" - 筛选到的事件数: {len(data['data']['events'])}") else: print(f"✗ 请求失败: {data.get('error')}") def test_combined_filters(): """测试组合筛选功能""" print("\n=== 测试组合筛选 (分页 + 交易日) ===") params = { 'tday': '2024-10-31', 'page': 1, 'per_page': 3, 'status': 'active' } response = requests.get(EVENTS_API, params=params) data = response.json() if data.get('success'): print(f"✓ 组合筛选成功") print(f" - 筛选到的事件数: {len(data['data']['events'])}") print(f" - 应用的筛选条件: {data['data']['filters']['applied_filters']}") if data['data']['events']: for i, event in enumerate(data['data']['events'], 1): print(f" - 事件{i}: {event['title'][:30]}... (创建时间: {event['created_at']})") else: print(f"✗ 请求失败: {data.get('error')}") def test_latest_trading_day(): """测试获取最新数据(不传 tday 参数)""" print("\n=== 测试获取最新数据 ===") params = { 'page': 1, 'per_page': 5, 'sort': 'new' } response = requests.get(EVENTS_API, params=params) data = response.json() if data.get('success'): print(f"✓ 获取最新数据成功") print(f" - 返回事件数: {len(data['data']['events'])}") if data['data']['events']: print(f" - 最新事件: {data['data']['events'][0]['title'][:50]}") print(f" - 创建时间: {data['data']['events'][0]['created_at']}") else: print(f"✗ 请求失败: {data.get('error')}") if __name__ == "__main__": print("开始测试 /api/events 接口") print("=" * 50) try: # 测试各项功能 test_pagination() test_trading_day_filter() test_combined_filters() test_latest_trading_day() print("\n" + "=" * 50) print("测试完成!") except requests.exceptions.ConnectionError: print("\n✗ 连接失败:请确保后端服务正在运行 (python app.py)") except Exception as e: print(f"\n✗ 测试出错: {e}")