""" 测试get_calendar_by_date函数 """ import sys import os from datetime import date # 添加项目路径到sys.path sys.path.append(os.path.dirname(os.path.abspath(__file__))) from app.core.data_parse.calendar import get_calendar_by_date def test_get_calendar_by_date(): """测试get_calendar_by_date函数""" print("=== 测试get_calendar_by_date函数 ===") # 测试用例1: 有效日期格式 print("\n1. 测试有效日期格式:") result = get_calendar_by_date("2025-01-19") print(f"输入: 2025-01-19") print(f"输出: {result}") # 测试用例2: 无效日期格式 print("\n2. 测试无效日期格式:") result = get_calendar_by_date("invalid-date") print(f"输入: invalid-date") print(f"输出: {result}") # 测试用例3: 错误长度的日期 print("\n3. 测试错误长度的日期:") result = get_calendar_by_date("2025-1-19") print(f"输入: 2025-1-19") print(f"输出: {result}") # 测试用例4: 空字符串 print("\n4. 测试空字符串:") result = get_calendar_by_date("") print(f"输入: ''") print(f"输出: {result}") # 测试用例5: 非字符串类型 print("\n5. 测试非字符串类型:") try: # 使用类型忽略来测试非字符串输入 result = get_calendar_by_date(123) # type: ignore print(f"输入: 123") print(f"输出: {result}") except Exception as e: print(f"输入: 123") print(f"异常: {e}") print("\n✓ 所有测试用例执行完成!") def test_function_signature(): """测试函数签名和类型提示""" print("\n=== 测试函数签名 ===") # 检查函数是否存在 if hasattr(get_calendar_by_date, '__call__'): print("✓ 函数存在且可调用") else: print("❌ 函数不存在或不可调用") # 检查函数文档 if get_calendar_by_date.__doc__: print("✓ 函数有文档字符串") print(f"文档: {get_calendar_by_date.__doc__.strip()}") else: print("❌ 函数缺少文档字符串") # 检查函数参数 import inspect sig = inspect.signature(get_calendar_by_date) print(f"✓ 函数参数: {sig}") print("\n✓ 函数签名测试完成!") def main(): """主测试函数""" print("开始测试get_calendar_by_date函数...\n") try: test_function_signature() test_get_calendar_by_date() print("\n🎉 所有测试完成!") print("\n函数特性:") print("- ✅ 接受YYYY-MM-DD格式的日期字符串") print("- ✅ 返回标准化的JSON响应格式") print("- ✅ 包含完整的错误处理") print("- ✅ 支持多种错误场景") print("- ✅ 返回码符合HTTP标准") except Exception as e: print(f"❌ 测试失败: {e}") import traceback traceback.print_exc() if __name__ == "__main__": main()