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.
113 lines
4.0 KiB
113 lines
4.0 KiB
"""测试股票K线接口返回的字段"""
|
|
import requests
|
|
import json
|
|
|
|
# API 配置
|
|
BASE_URL = "http://localhost:8080/v1"
|
|
API_KEY = ""
|
|
|
|
# 测试获取股票K线
|
|
def test_stock_klines():
|
|
"""测试股票K线接口返回的字段"""
|
|
url = f"{BASE_URL}/stock/klines/000001.SZ"
|
|
headers = {"X-API-Key": API_KEY}
|
|
params = {
|
|
"start": "20260301",
|
|
"end": "20260310",
|
|
"freq": "1d"
|
|
}
|
|
|
|
print(f"\n{'='*60}")
|
|
print(f"测试接口: GET {url}")
|
|
print(f"{'='*60}")
|
|
|
|
try:
|
|
response = requests.get(url, headers=headers, params=params)
|
|
data = response.json()
|
|
|
|
if data.get("code") == 0:
|
|
kline_data = data.get("data", {})
|
|
items = kline_data.get("items", [])
|
|
|
|
print(f"\n标的: {kline_data.get('symbol')}")
|
|
print(f"周期: {kline_data.get('freq')}")
|
|
print(f"数据条数: {len(items)}")
|
|
print(f"\n{'='*60}")
|
|
|
|
if items:
|
|
# 显示第一条数据的完整字段
|
|
first_item = items[0]
|
|
print("\n第一条数据详情:")
|
|
print(f"{'-'*60}")
|
|
|
|
# 基础字段
|
|
print(f"时间戳: {first_item.get('time')}")
|
|
print(f"开盘价: {first_item.get('open')}")
|
|
print(f"最高价: {first_item.get('high')}")
|
|
print(f"最低价: {first_item.get('low')}")
|
|
print(f"收盘价: {first_item.get('close')}")
|
|
print(f"成交量: {first_item.get('volume')}")
|
|
print(f"成交额: {first_item.get('amount')}")
|
|
|
|
# 扩展字段
|
|
print(f"\n扩展字段:")
|
|
print(f" 交易日: {first_item.get('trade_date')}")
|
|
print(f" 是否涨停: {first_item.get('is_limit_up')}")
|
|
print(f" 是否跌停: {first_item.get('is_limit_down')}")
|
|
print(f" 总市值: {first_item.get('total_market_cap')}")
|
|
print(f" 流通市值: {first_item.get('float_market_cap')}")
|
|
print(f" 机构持仓占比: {first_item.get('inst_holding_ratio')}")
|
|
print(f" 可交易日数: {first_item.get('trading_days')}")
|
|
print(f" 创建时间: {first_item.get('created_at')}")
|
|
|
|
# 验证所有字段是否存在
|
|
expected_fields = [
|
|
'symbol', 'time', 'open', 'high', 'low', 'close',
|
|
'volume', 'amount', 'trade_date', 'is_limit_up',
|
|
'is_limit_down', 'total_market_cap', 'float_market_cap',
|
|
'inst_holding_ratio', 'trading_days', 'created_at'
|
|
]
|
|
|
|
print(f"\n{'='*60}")
|
|
print("字段完整性检查:")
|
|
print(f"{'-'*60}")
|
|
|
|
missing_fields = []
|
|
for field in expected_fields:
|
|
if field in first_item:
|
|
print(f" ✓ {field}")
|
|
else:
|
|
print(f" ✗ {field} (缺失)")
|
|
missing_fields.append(field)
|
|
|
|
if missing_fields:
|
|
print(f"\n缺失字段: {', '.join(missing_fields)}")
|
|
else:
|
|
print(f"\n所有字段都存在!")
|
|
|
|
return True
|
|
else:
|
|
print("没有获取到数据")
|
|
return False
|
|
else:
|
|
print(f"请求失败: {data.get('message')}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"请求异常: {e}")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
print("\n" + "="*60)
|
|
print("股票K线接口字段测试")
|
|
print("="*60)
|
|
|
|
success = test_stock_klines()
|
|
|
|
print(f"\n{'='*60}")
|
|
if success:
|
|
print("测试完成!")
|
|
else:
|
|
print("测试失败!")
|
|
print("="*60 + "\n")
|