Files
capcut-mate/tests/verify_get_text_effects_api.py

153 lines
4.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
验证 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())