mirror of
https://github.com/Hommy-master/capcut-mate.git
synced 2026-06-20 16:46:08 +08:00
153 lines
4.5 KiB
Python
153 lines
4.5 KiB
Python
"""
|
||
验证 get_text_effects API 端点是否正确注册
|
||
"""
|
||
import sys
|
||
import os
|
||
|
||
# 添加项目根目录到 Python 路径
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
||
def test_imports():
|
||
"""测试所有导入是否正常"""
|
||
print("=" * 60)
|
||
print("测试 1: 检查模块导入")
|
||
print("=" * 60)
|
||
|
||
try:
|
||
from src.schemas.get_text_effects import (
|
||
GetTextEffectsRequest,
|
||
TextEffectItem,
|
||
GetTextEffectsResponse
|
||
)
|
||
print("✅ Schema 模块导入成功")
|
||
|
||
from src.service.get_text_effects import (
|
||
get_text_effects,
|
||
resolve_text_effect
|
||
)
|
||
print("✅ Service 模块导入成功")
|
||
|
||
# 检查 router 源码中是否有该端点
|
||
import inspect
|
||
from src.router import v1 as router_module
|
||
source = inspect.getsource(router_module)
|
||
|
||
if '@router.post(path="/get_text_effects"' in source:
|
||
print("✅ Router 端点注册成功:/get_text_effects")
|
||
else:
|
||
print("❌ Router 端点未在源码中找到:/get_text_effects")
|
||
return False
|
||
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f"❌ 导入失败:{str(e)}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
return False
|
||
|
||
|
||
def test_schema_validation():
|
||
"""测试 Schema 验证"""
|
||
print("\n" + "=" * 60)
|
||
print("测试 2: Schema 验证")
|
||
print("=" * 60)
|
||
|
||
try:
|
||
from src.schemas.get_text_effects import GetTextEffectsRequest
|
||
|
||
# 测试默认值
|
||
req1 = GetTextEffectsRequest()
|
||
assert req1.mode == 0, "默认 mode 应该是 0"
|
||
print("✅ 默认参数验证通过")
|
||
|
||
# 测试有效值
|
||
req2 = GetTextEffectsRequest(mode=2)
|
||
assert req2.mode == 2, "mode 应该可以是 2"
|
||
print("✅ 有效参数验证通过")
|
||
|
||
# 测试无效值
|
||
try:
|
||
req3 = GetTextEffectsRequest(mode=5)
|
||
print("❌ 应该拒绝 mode=5")
|
||
return False
|
||
except Exception:
|
||
print("✅ 无效参数正确被拒绝")
|
||
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f"❌ Schema 验证失败:{str(e)}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
return False
|
||
|
||
|
||
def test_service_logic():
|
||
"""测试 Service 层逻辑"""
|
||
print("\n" + "=" * 60)
|
||
print("测试 3: Service 层逻辑")
|
||
print("=" * 60)
|
||
|
||
try:
|
||
from src.service.get_text_effects import get_text_effects, resolve_text_effect
|
||
|
||
# 测试获取所有效果
|
||
effects = get_text_effects(mode=0)
|
||
assert isinstance(effects, list), "应该返回列表"
|
||
print(f"✅ 获取所有效果成功,共 {len(effects)} 个")
|
||
|
||
# 测试获取免费效果
|
||
free_effects = get_text_effects(mode=2)
|
||
assert isinstance(free_effects, list), "应该返回列表"
|
||
assert len(free_effects) <= len(effects), "免费效果数不应超过总数"
|
||
print(f"✅ 获取免费效果成功,共 {len(free_effects)} 个")
|
||
|
||
# 测试解析功能
|
||
effect_info = resolve_text_effect("红黄火焰综艺花字")
|
||
if effect_info:
|
||
assert "resource_id" in effect_info, "应该包含 resource_id"
|
||
assert "effect_id" in effect_info, "应该包含 effect_id"
|
||
print("✅ 效果解析功能正常")
|
||
else:
|
||
print("⚠️ 效果解析返回 None(可能是数据问题)")
|
||
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f"❌ Service 层测试失败:{str(e)}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
return False
|
||
|
||
|
||
def main():
|
||
print("\n🚀 开始验证 get_text_effects API\n")
|
||
|
||
results = []
|
||
|
||
results.append(("模块导入", test_imports()))
|
||
results.append(("Schema 验证", test_schema_validation()))
|
||
results.append(("Service 逻辑", test_service_logic()))
|
||
|
||
print("\n" + "=" * 60)
|
||
print("验证总结")
|
||
print("=" * 60)
|
||
|
||
for name, passed in results:
|
||
status = "✅ 通过" if passed else "❌ 失败"
|
||
print(f"{status}: {name}")
|
||
|
||
all_passed = all(result[1] for result in results)
|
||
|
||
if all_passed:
|
||
print("\n🎉 所有验证通过!API 已准备就绪。")
|
||
return 0
|
||
else:
|
||
print("\n❌ 部分验证失败,请检查代码。")
|
||
return 1
|
||
|
||
|
||
if __name__ == "__main__":
|
||
exit(main())
|