Add complete test infrastructure for yaml2pptx project with 245+ tests covering unit, integration, and end-to-end scenarios. Test structure: - Unit tests: elements, template system, validators, loaders, utils - Integration tests: presentation and rendering flows - E2E tests: CLI commands (convert, check, preview) Key features: - PptxFileValidator for Level 2 PPTX validation (file structure, element count, content matching, position tolerance) - Comprehensive fixtures for test data consistency - Mock-based testing for external dependencies - Test images generated with PIL/Pillow - Boundary case coverage for edge scenarios Dependencies added: - pytest, pytest-cov, pytest-mock - pillow (for test image generation) Documentation updated: - README.md: test running instructions - README_DEV.md: test development guide Co-authored-by: OpenSpec change: add-comprehensive-tests
2.3 KiB
2.3 KiB
Why
yaml2pptx 项目目前没有任何测试代码,存在以下风险:
- 代码重构和功能迭代时缺乏安全网,容易引入回归问题
- 验证器、渲染器等核心模块的逻辑复杂,缺少自动化验证
- 新功能开发时无法快速验证正确性
- 无法保证 PPTX 生成质量的一致性
现在项目架构已稳定,核心功能基本完成,是建立测试体系的最佳时机。
What Changes
- 新增完整的测试目录结构
tests/,包含单元测试、集成测试、端到端测试 - 新增
pyproject.toml测试依赖配置(pytest、pytest-cov 等) - 新增
tests/conftest.py配置共享 fixtures - 新增
tests/conftest_pptx.pyPPTX 文件验证辅助工具 - 新增
tests/fixtures/测试数据目录(YAML 样本、模板、图片) - 实现约 150+ 测试用例覆盖所有核心模块
- 测试将实际生成 PPTX 文件并进行 Level 2 验证(文件结构、元素数量、内容匹配、位置范围)
- Preview 测试采用方案 A(不启动真实服务器,测试 HTML 生成函数和路由配置)
Capabilities
New Capabilities
test-framework: pytest 测试框架基础设施,包含配置、fixtures、临时文件管理unit-tests: 单元测试,覆盖各模块独立功能(elements、template、validators、loaders、utils)integration-tests: 集成测试,覆盖模块间协作(presentation、渲染流程、验证流程)e2e-tests: 端到端测试,覆盖 CLI 命令(convert、check、preview)pptx-validation: PPTX 文件验证工具,支持文件级别、幻灯片级别、元素级别的验证
Modified Capabilities
无。测试是新增能力,不修改现有功能的行为要求。
Impact
代码影响
- 新增
tests/目录及所有测试文件 - 修改
pyproject.toml添加测试依赖 - 可能需要调整部分代码以提升可测试性(如全局变量处理)
依赖增加
pytest: 测试框架pytest-cov: 覆盖率报告(可选)pytest-mock: Mock 工具(可选)pillow: 用于创建测试图片
开发流程
- 开发者可通过
uv run pytest运行测试 - 提交代码前应确保测试通过
- 新功能开发应同步编写测试
文档更新
README.md添加测试运行说明README_DEV.md添加测试开发指南