1
0
Files
PPTX/openspec/changes/archive/2026-03-02-add-comprehensive-tests/tasks.md
lanyuanxiaoyao ab2510a400 test: add comprehensive pytest test suite
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
2026-03-02 23:11:34 +08:00

3.2 KiB
Raw Blame History

1. 测试环境配置

  • 1.1 更新 pyproject.toml 添加测试依赖pytest、pytest-cov、pytest-mock、pillow
  • 1.2 创建 tests/conftest.py 配置共享 fixtures
  • 1.3 创建 tests/init.py 空文件

2. 测试基础设施

  • 2.1 创建 tests/conftest_pptx.py 实现 PptxFileValidator 工具类
  • 2.2 创建 tests/fixtures/ 目录结构
  • 2.3 创建 tests/fixtures/yaml_samples/minimal.yaml 最小示例
  • 2.4 创建 tests/fixtures/yaml_samples/full_features.yaml 完整功能示例
  • 2.5 创建 tests/fixtures/yaml_samples/edge_cases/ 边界情况样本
  • 2.6 创建 tests/fixtures/yaml_samples/invalid/ 无效样本
  • 2.7 创建 tests/fixtures/templates/test_template.yaml 测试模板
  • 2.8 添加创建测试图片的 fixture 函数(已在 conftest.py 中实现)

3. 单元测试 - 元素类

  • 3.1 创建 tests/unit/test_elements.py 并实现 TextElement 测试
  • 3.2 实现 ImageElement 测试
  • 3.3 实现 ShapeElement 测试
  • 3.4 实现 TableElement 测试
  • 3.5 实现 create_element() 工厂函数测试

4. 单元测试 - 模板系统

  • 4.1 创建 tests/unit/test_template.py 并实现模板初始化测试
  • 4.2 实现变量解析测试resolve_value、resolve_element
  • 4.3 实现条件渲染测试evaluate_condition
  • 4.4 实现模板渲染测试render

5. 单元测试 - 验证器

  • 5.1 创建 tests/unit/test_validators/ 目录
  • 5.2 创建 tests/unit/test_validators/test_geometry.py 并实现边界检查测试
  • 5.3 创建 tests/unit/test_validators/test_resource.py 并实现资源验证测试
  • 5.4 创建 tests/unit/test_validators/test_result.py 并实现验证结果测试
  • 5.5 创建 tests/unit/test_validators/test_validator.py 并实现主验证器测试

6. 单元测试 - 其他模块

  • 6.1 创建 tests/unit/test_loaders/test_yaml_loader.py 并实现加载测试
  • 6.2 创建 tests/unit/test_utils.py 并实现工具函数测试
  • 6.3 创建 tests/unit/test_validators/init.py 空文件
  • 6.4 创建 tests/unit/test_loaders/init.py 空文件

7. 集成测试

  • 7.1 创建 tests/integration/test_presentation.py 并实现 Presentation 类测试
  • 7.2 创建 tests/integration/test_rendering_flow.py 并实现渲染流程测试
  • 7.3 实现文本元素渲染集成测试
  • 7.4 实现图片元素渲染集成测试
  • 7.5 实现形状元素渲染集成测试
  • 7.6 实现表格元素渲染集成测试
  • 7.7 实现背景渲染集成测试
  • 7.8 创建 tests/integration/test_validation_flow.py 并实现验证流程测试

8. 端到端测试

  • 8.1 创建 tests/e2e/test_convert_cmd.py 并实现基本转换测试
  • 8.2 实现自动输出文件名测试
  • 8.3 实现使用模板测试
  • 8.4 实现跳过验证测试
  • 8.5 实现强制覆盖测试
  • 8.6 实现无效输入文件测试
  • 8.7 创建 tests/e2e/test_check_cmd.py 并实现验证通过测试
  • 8.8 实现验证失败测试
  • 8.9 创建 tests/e2e/test_preview_cmd.py 并实现 HTML 生成测试

9. 文档更新

  • 9.1 更新 README.md 添加测试运行说明
  • 9.2 更新 README_DEV.md 添加测试开发指南
  • 9.3 在 README.md 中添加测试覆盖率要求说明