123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- """
- 测试日历API路由接口
- """
- import sys
- import os
- import requests
- import json
- from datetime import date
- # 添加项目路径到sys.path
- sys.path.append(os.path.dirname(os.path.abspath(__file__)))
- def test_calendar_api_route():
- """测试日历API路由接口"""
- print("=== 测试日历API路由接口 ===")
-
- # API基础URL(根据实际部署情况调整)
- base_url = "http://localhost:5000" # 假设Flask应用运行在5000端口
- api_endpoint = "/api/data_parse/get-calendar-info"
-
- # 测试用例1: 有效日期格式
- print("\n1. 测试有效日期格式:")
- test_date = "2025-01-19"
- print(f"查询日期: {test_date}")
-
- try:
- response = requests.get(f"{base_url}{api_endpoint}", params={'date': test_date})
- print(f"HTTP状态码: {response.status_code}")
- print(f"响应内容: {response.text}")
-
- if response.status_code == 200:
- result = response.json()
- if result.get('return_code') == 200:
- print("✅ API调用成功!")
- calendar_data = result.get('result', {})
- if calendar_data:
- print(f" - ID: {calendar_data.get('id')}")
- print(f" - 阳历: {calendar_data.get('yangli')}")
- print(f" - 阴历: {calendar_data.get('yinli')}")
- print(f" - 五行: {calendar_data.get('wuxing')}")
- print(f" - 宜: {calendar_data.get('yi')}")
- print(f" - 忌: {calendar_data.get('ji')}")
- else:
- print(f"❌ 业务逻辑失败: {result.get('error')}")
- else:
- print(f"❌ HTTP请求失败: {response.status_code}")
-
- except requests.exceptions.ConnectionError:
- print("❌ 连接失败 - 请确保Flask应用正在运行")
- except Exception as e:
- print(f"❌ 测试过程中发生异常: {e}")
-
- # 测试用例2: 无效日期格式
- print("\n2. 测试无效日期格式:")
- invalid_date = "2025-1-19"
- print(f"查询日期: {invalid_date}")
-
- try:
- response = requests.get(f"{base_url}{api_endpoint}", params={'date': invalid_date})
- print(f"HTTP状态码: {response.status_code}")
- print(f"响应内容: {response.text}")
-
- if response.status_code == 400:
- print("✅ 正确返回400错误状态码")
- else:
- print(f"❌ 期望400状态码,实际得到: {response.status_code}")
-
- except requests.exceptions.ConnectionError:
- print("❌ 连接失败 - 请确保Flask应用正在运行")
- except Exception as e:
- print(f"❌ 测试过程中发生异常: {e}")
-
- # 测试用例3: 缺少日期参数
- print("\n3. 测试缺少日期参数:")
- print("不传递date参数")
-
- try:
- response = requests.get(f"{base_url}{api_endpoint}")
- print(f"HTTP状态码: {response.status_code}")
- print(f"响应内容: {response.text}")
-
- if response.status_code == 400:
- print("✅ 正确返回400错误状态码")
- else:
- print(f"❌ 期望400状态码,实际得到: {response.status_code}")
-
- except requests.exceptions.ConnectionError:
- print("❌ 连接失败 - 请确保Flask应用正在运行")
- except Exception as e:
- print(f"❌ 测试过程中发生异常: {e}")
-
- # 测试用例4: 空日期参数
- print("\n4. 测试空日期参数:")
- empty_date = ""
- print(f"查询日期: '{empty_date}'")
-
- try:
- response = requests.get(f"{base_url}{api_endpoint}", params={'date': empty_date})
- print(f"HTTP状态码: {response.status_code}")
- print(f"响应内容: {response.text}")
-
- if response.status_code == 400:
- print("✅ 正确返回400错误状态码")
- else:
- print(f"❌ 期望400状态码,实际得到: {response.status_code}")
-
- except requests.exceptions.ConnectionError:
- print("❌ 连接失败 - 请确保Flask应用正在运行")
- except Exception as e:
- print(f"❌ 测试过程中发生异常: {e}")
-
- print("\n✓ 所有API路由测试完成!")
- def test_api_documentation():
- """测试API文档和接口规范"""
- print("\n=== 测试API文档和接口规范 ===")
-
- # 检查API接口规范
- print("API接口规范:")
- print("- 端点: GET /api/data_parse/get-calendar-info")
- print("- 参数: date (YYYY-MM-DD格式)")
- print("- 返回格式: 标准化的JSON响应")
-
- # 检查返回字段
- print("\n返回字段说明:")
- print("- reason: 操作结果描述")
- print("- return_code: HTTP状态码")
- print("- result: 黄历信息数据对象")
- print("- error: 错误信息(失败时)")
-
- print("\n✓ API文档测试完成!")
- def main():
- """主测试函数"""
- print("开始测试日历API路由接口...\n")
-
- try:
- test_api_documentation()
- test_calendar_api_route()
-
- print("\n🎉 所有测试完成!")
- print("\nAPI接口特性:")
- print("- ✅ GET方法访问")
- print("- ✅ 日期参数验证")
- print("- ✅ 标准化JSON响应")
- print("- ✅ 完整的错误处理")
- print("- ✅ 详细的日志记录")
- print("- ✅ 符合RESTful规范")
-
- print("\n使用方法:")
- print("GET /api/data_parse/get-calendar-info?date=2025-01-19")
-
- except Exception as e:
- print(f"❌ 测试失败: {e}")
- import traceback
- traceback.print_exc()
- if __name__ == "__main__":
- main()
|