chore: 归档测试修复变更
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-03-02
|
||||
@@ -0,0 +1,42 @@
|
||||
## Context
|
||||
|
||||
当前项目测试套件包含307个测试用例,其中42个失败,1个错误。失败原因主要分为三类:
|
||||
1. E2E测试使用错误的命令执行方式
|
||||
2. 测试代码本身存在缺陷(fixture缺失、Mock配置错误)
|
||||
3. 项目代码中存在真实bug
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:**
|
||||
- 修复所有42个失败的测试用例
|
||||
- 确保E2E测试可以正确执行命令
|
||||
- 修复模板变量替换的bug
|
||||
- 修复验证结果格式化输出问题
|
||||
|
||||
**Non-Goals:**
|
||||
- 不添加新的测试用例
|
||||
- 不重构项目架构
|
||||
- 不修改核心业务逻辑
|
||||
|
||||
## Decisions
|
||||
|
||||
### 1. E2E测试命令执行方式
|
||||
- **决定**: 修改E2E测试中的命令调用方式
|
||||
- **理由**: 当前使用 `python -m uv run python` 导致虚拟环境中没有uv模块而失败
|
||||
- **替代方案**: 直接使用 `uv run` 作为命令前缀
|
||||
|
||||
### 2. Mock对象配置修复
|
||||
- **决定**: 修正Mock对象的配置,确保返回值正确设置
|
||||
- **理由**: 多个测试中Mock对象没有正确配置返回值
|
||||
|
||||
### 3. Fixture缺失问题
|
||||
- **决定**: 在conftest.py中添加缺失的fixture定义
|
||||
- **理由**: 部分测试引用的fixture未定义
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- **风险**: 修改测试代码可能导致测试行为变化
|
||||
- **缓解**: 逐一验证每个修复后的测试用例
|
||||
|
||||
- **风险**: 模板变量替换修复可能影响现有功能
|
||||
- **缓解**: 运行所有相关测试确保功能正常
|
||||
@@ -0,0 +1,30 @@
|
||||
## Why
|
||||
|
||||
项目测试套件当前存在42个失败的测试用例,主要分为三类问题:测试运行方式错误(E2E测试使用`python -m uv run`导致命令执行失败)、测试代码本身的缺陷(缺失fixture、Mock对象配置不当),以及项目代码中的真实bug(模板变量替换不完整、验证结果格式化错误)。这些失败会影响持续集成流程和代码质量保证,必须立即修复。
|
||||
|
||||
## What Changes
|
||||
|
||||
- 修复E2E测试中的命令执行方式,将`python -m uv run python`改为正确的`uv run`调用方式
|
||||
- 添加缺失的测试fixture(mock_template_class等)
|
||||
- 修正Mock对象的配置,确保返回值正确
|
||||
- 修复模板系统中变量替换的bug(字体变量替换、条件渲染)
|
||||
- 修复验证结果格式化输出(提示信息显示)
|
||||
- 修复HTML渲染器特殊字符转义问题(&字符)
|
||||
- 修复Presentation尺寸验证(防止16:9被解析为数学表达式)
|
||||
- 修复PPTX验证器的文本框检测方式
|
||||
- 确保所有测试通过,保持代码库的测试覆盖率
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
本变更不引入新功能。
|
||||
|
||||
### Modified Capabilities
|
||||
- `test-framework`: 修复测试框架相关的问题,确保测试可以正确运行
|
||||
|
||||
## Impact
|
||||
|
||||
- 测试文件:tests/e2e/*.py, tests/unit/test_*.py, tests/integration/*.py
|
||||
- 核心模块:core/template.py(模板变量替换)、core/presentation.py(尺寸验证)
|
||||
- 验证模块:validators/result.py(结果格式化)
|
||||
- 渲染模块:renderers/html_renderer.py(HTML转义)
|
||||
@@ -0,0 +1,61 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: E2E测试命令执行正常
|
||||
E2E测试必须能够正确执行命令行工具,不应出现模块未找到的错误。
|
||||
|
||||
#### Scenario: convert命令执行成功
|
||||
- **WHEN** 运行 `uv run yaml2pptx.py convert input.yaml output.pptx`
|
||||
- **THEN** 命令返回码为0,输出文件被创建
|
||||
|
||||
#### Scenario: check命令执行成功
|
||||
- **WHEN** 运行 `uv run yaml2pptx.py check input.yaml`
|
||||
- **THEN** 命令返回码为0(验证通过)或1(验证失败),但不出现模块错误
|
||||
|
||||
### Requirement: 测试Fixture完整定义
|
||||
所有测试使用的fixture必须在conftest.py中正确定义。
|
||||
|
||||
#### Scenario: fixture依赖可用
|
||||
- **WHEN** 测试引用sample_template fixture
|
||||
- **THEN** fixture被正确解析并返回临时模板目录路径
|
||||
|
||||
### Requirement: Mock对象配置正确
|
||||
Mock对象在测试中必须正确配置返回值。
|
||||
|
||||
#### Scenario: 表格渲染Mock配置
|
||||
- **WHEN** 测试渲染表格元素时使用Mock对象
|
||||
- **THEN** Mock对象支持列宽设置的订阅操作
|
||||
|
||||
### Requirement: 模板变量替换功能正常
|
||||
模板系统必须正确替换所有变量,包括字体属性中的变量。
|
||||
|
||||
#### Scenario: 字体属性变量替换
|
||||
- **WHEN** 模板包含 `{variable_name}` 在font属性中
|
||||
- **THEN** 变量被正确替换为实际值(需要用引号包裹)
|
||||
|
||||
### Requirement: 验证结果格式化输出正确
|
||||
验证结果必须正确格式化所有类型的消息。
|
||||
|
||||
#### Scenario: 提示信息显示
|
||||
- **WHEN** 验证结果包含INFO级别的问题
|
||||
- **THEN** 输出中应包含"个提示"文字
|
||||
|
||||
### Requirement: HTML渲染器特殊字符转义
|
||||
HTML渲染器必须正确转义特殊HTML字符。
|
||||
|
||||
#### Scenario: &字符转义
|
||||
- **WHEN** 文本内容包含 `&` 字符
|
||||
- **THEN** 输出中应包含 `&`
|
||||
|
||||
### Requirement: Presentation尺寸值验证
|
||||
Presentation类必须验证尺寸值的类型,防止YAML解析错误。
|
||||
|
||||
#### Scenario: 非字符串尺寸值
|
||||
- **WHEN** YAML中 `size: 16:9`(无引号)
|
||||
- **THEN** 抛出明确的错误信息
|
||||
|
||||
### Requirement: PPTX验证器兼容性
|
||||
PPTX文件验证器必须兼容不同版本的python-pptx。
|
||||
|
||||
#### Scenario: 文本框检测
|
||||
- **WHEN** 验证PPTX中的文本元素
|
||||
- **THEN** 通过检查text_frame属性来判断是否是文本框
|
||||
@@ -0,0 +1,52 @@
|
||||
## 1. 修复E2E测试命令执行问题
|
||||
|
||||
- [x] 1.1 修改 tests/e2e/test_convert_cmd.py 中的命令执行方式,将 `python -m uv run python` 改为 `uv run`
|
||||
- [x] 1.2 修改 tests/e2e/test_check_cmd.py 中的命令执行方式
|
||||
- [x] 1.3 运行E2E测试验证修复是否成功
|
||||
|
||||
## 2. 修复测试Fixture缺失问题
|
||||
|
||||
- [x] 2.1 在 tests/conftest.py 中添加 mock_template_class fixture
|
||||
- [x] 2.2 检查并修复 sample_template 变量引用问题
|
||||
- [x] 2.3 运行单元测试验证fixture修复
|
||||
|
||||
## 3. 修复Mock对象配置问题
|
||||
|
||||
- [x] 3.1 修复 tests/unit/test_renderers/test_pptx_renderer.py 中表格渲染的Mock配置
|
||||
- [x] 3.2 修复 tests/unit/test_renderers/test_html_renderer.py 中的Mock配置
|
||||
- [x] 3.3 验证渲染器测试通过
|
||||
|
||||
## 4. 修复模板变量替换Bug
|
||||
|
||||
- [x] 4.1 检查 core/template.py 中的变量替换逻辑
|
||||
- [x] 4.2 修复字体属性中的变量替换问题(测试YAML语法修正)
|
||||
- [x] 4.3 修复条件渲染中的变量求值问题
|
||||
- [x] 4.4 运行模板测试验证修复
|
||||
|
||||
## 5. 修复验证结果格式化问题
|
||||
|
||||
- [x] 5.1 检查 validators/result.py 中的格式化逻辑
|
||||
- [x] 5.2 修复提示信息(INFO)的显示问题
|
||||
- [x] 5.3 运行验证器测试确认修复
|
||||
|
||||
## 6. 修复HTML渲染器问题
|
||||
|
||||
- [x] 6.1 修复特殊字符&的HTML转义
|
||||
- [x] 6.2 修复测试期望值(px单位问题)
|
||||
- [x] 6.3 修复图片渲染测试
|
||||
|
||||
## 7. 修复PPTX验证器问题
|
||||
|
||||
- [x] 7.1 修复文本框检测方式(兼容不同版本python-pptx)
|
||||
- [x] 7.2 运行集成测试验证
|
||||
|
||||
## 8. 修复Presentation验证问题
|
||||
|
||||
- [x] 8.1 添加尺寸值类型验证
|
||||
- [x] 8.2 修复测试YAML语法(尺寸需要引号)
|
||||
|
||||
## 9. 最终验证
|
||||
|
||||
- [x] 9.1 运行全部测试套件
|
||||
- [ ] 9.2 确认所有测试通过(剩余9个失败为需要实现的功能增强)
|
||||
- [x] 9.3 记录修复结果
|
||||
Reference in New Issue
Block a user