1
0
Files
PPTX/tests/e2e/test_preview_cmd.py
lanyuanxiaoyao f1aae96a04 refactor: 重构外部模板系统,改为单文件模板库模式
主要变更:
- 将 templates_dir 参数改为 template_file,支持单个模板库 YAML 文件
- 添加模板库 YAML 验证功能
- 为模板添加 base_dir 支持,正确解析相对路径资源
- 内联模板与外部模板同名时改为警告(内联优先)
- 移除模板缓存机制,直接使用模板库字典
- 更新所有相关测试以适配新的模板加载方式

此重构简化了模板管理,使模板资源的路径解析更加清晰明确。
2026-03-05 13:27:12 +08:00

62 lines
1.8 KiB
Python

"""
Preview 命令端到端测试
测试 yaml2pptx.py preview 命令的 HTML 生成功能(不启动真实服务器)
"""
import pytest
from pathlib import Path
from unittest.mock import patch, MagicMock
from preview.server import generate_preview_html, create_flask_app
class TestGeneratePreviewHtml:
"""generate_preview_html 函数测试类"""
def test_generate_html_from_valid_yaml(self, sample_yaml):
"""测试从有效 YAML 生成 HTML"""
html = generate_preview_html(str(sample_yaml), None)
assert isinstance(html, str)
assert "<!DOCTYPE html>" in html
assert "<html>" in html
assert "</html>" in html
def test_html_contains_css_styles(self, sample_yaml):
"""测试 HTML 包含 CSS 样式"""
html = generate_preview_html(str(sample_yaml), None)
assert "<style>" in html
assert ".slide" in html
assert "position: absolute" in html
def test_html_with_invalid_yaml(self, temp_dir):
"""测试无效 YAML 返回错误页面"""
yaml_path = temp_dir / "invalid.yaml"
yaml_path.write_text("invalid: [unclosed")
html = generate_preview_html(str(yaml_path), None)
# 应该返回错误页面
assert "<!DOCTYPE html>" in html
assert "错误" in html or "error" in html.lower()
def test_html_contains_slide_number(self, sample_yaml):
"""测试 HTML 包含幻灯片编号"""
html = generate_preview_html(str(sample_yaml), None)
assert "slide-number" in html
def test_html_contains_sse_script(self, sample_yaml):
"""测试 HTML 包含 SSE 事件脚本"""
html = generate_preview_html(str(sample_yaml), None)
assert "EventSource" in html
assert "/events" in html