| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/env python
- """测试模板预览功能"""
- import sys
- from pathlib import Path
- # 添加后端路径
- sys.path.insert(0, str(Path(__file__).parent.parent / "backend"))
- from app.services.renderer import renderer
- # 测试用例1:简单模板
- test_template_1 = """
- {% set greeting = ["嗨", "哈喽"] %}
- {{ greeting | random }},我是你的洗衣小助手!
- """
- # 测试用例2:带程序名称的模板
- test_template_2 = """
- {% set program_id = program_id | string | trim %}
- {% set program_name = program_name_map.get(program_id, "智慧洗") %}
- 推荐使用{{ program_name }}程序,洗衣更省心!
- """
- # 测试用例3:X11 真实 common 模板片段
- test_template_3 = """
- {% set greeting = ["嗨", "哈喽"] %}
- {% set assistant1 = ["小优来啦", "你的洗护小管家来啦"] %}
- {% set assistant2 = ["洗衣推荐来啦", "洗衣小贴士来啦"] %}
- {{ greeting | random }},{{ assistant1 | random }},{{ assistant2 | random }}
- """
- # 测试用例4:带条件分支
- test_template_4 = """
- {% if rerank_reason == "PIN_CONSECUTIVE" %}
- 发现你连续使用了{{ program_name }}程序,这个程序很适合日常使用哦!
- {% elif rerank_reason == "POPULAR" %}
- 为你推荐人气程序{{ program_name }},很多用户都喜欢用!
- {% else %}
- 为您推荐{{ program_name }}程序!
- {% endif %}
- """
- def test_preview(template_body, name, params=None):
- print(f"\n{'='*60}")
- print(f"测试: {name}")
- print(f"{'='*60}")
-
- try:
- params = params or {}
- result = renderer.preview(type('obj', (object,), {
- 'template_body': template_body,
- 'parameters': params
- })())
-
- print(f"✅ 成功")
- print(f"\n生成结果:\n{result}")
- return True
- except Exception as e:
- print(f"❌ 失败: {e}")
- return False
- if __name__ == "__main__":
- print("开始测试模板预览功能...")
-
- all_passed = True
-
- # 测试1:简单模板
- all_passed &= test_preview(test_template_1, "简单模板")
-
- # 测试2:带程序名称
- all_passed &= test_preview(test_template_2, "带程序名称", {
- 'program_id': '15'
- })
-
- # 测试3:X11 真实模板
- all_passed &= test_preview(test_template_3, "X11 common模板")
-
- # 测试4:条件分支(无参数时应触发默认值)
- all_passed &= test_preview(test_template_4, "条件分支模板", {
- 'program_name': '速洗'
- })
-
- # 测试5:缺失参数(应自动填充默认值)
- all_passed &= test_preview(test_template_4, "条件分支-缺失参数自动填充")
-
- print(f"\n{'='*60}")
- if all_passed:
- print("✅ 所有测试通过!")
- else:
- print("❌ 部分测试失败")
- print(f"{'='*60}")
|