feat: 添加 doc/xls/ppt 旧格式文档静态测试文件支持

- 更新 .gitattributes,将 fixtures 目录所有文件纳入 Git LFS
- 在 tests/test_readers/conftest.py 中添加静态文件 fixtures
- 添加 doc/xls/ppt 静态测试文件(9个文件)
- 更新各旧格式解析器测试用例使用静态文件
- 更新一致性测试使用静态文件
- 在 README.md 中添加 fixtures 使用规范
- 同步 delta specs 到主 specs(doc-reader/xls-reader/ppt-reader/reader-testing/test-fixtures)
- 归档 add-static-test-fixtures 变更
This commit is contained in:
2026-03-11 00:30:47 +08:00
parent 725b91374f
commit fad0edc46a
27 changed files with 493 additions and 14 deletions

View File

@@ -59,6 +59,18 @@ tests/test_readers/conftest.py MUST 提供 Reader 测试专用的 fixtures。
- **WHEN** 测试需要临时 XLSX 文件
- **THEN** 可以使用 `temp_xlsx` fixture 创建临时 XLSX 文件
#### Scenario: 提供 doc 静态文件 fixtures
- **WHEN** 测试需要 doc 静态测试文件
- **THEN** 可以使用 `simple_doc_path``with_headings_doc_path``with_table_doc_path`
#### Scenario: 提供 xls 静态文件 fixtures
- **WHEN** 测试需要 xls 静态测试文件
- **THEN** 可以使用 `simple_xls_path``multiple_sheets_xls_path``with_formulas_xls_path`
#### Scenario: 提供 ppt 静态文件 fixtures
- **WHEN** 测试需要 ppt 静态测试文件
- **THEN** 可以使用 `simple_ppt_path``multiple_slides_ppt_path``with_images_ppt_path`
### Requirement: CLI 专用 fixtures
tests/test_cli/conftest.py MUST 提供 CLI 测试专用的 fixtures。
@@ -106,3 +118,54 @@ temp_html fixture MUST 支持创建包含各种元素的 HTML 文件。
#### Scenario: 创建包含标题和段落的 HTML
- **WHEN** 调用 `temp_html(content="<h1>标题</h1><p>段落</p>")`
- **THEN** 创建包含指定内容的 HTML 文件
### Requirement: 静态测试文件目录结构
项目 MUST 在 `tests/test_readers/fixtures/` 下按格式类型组织静态测试文件。
#### Scenario: doc 静态文件目录
- **WHEN** 查看 `tests/test_readers/fixtures/doc/`
- **THEN** 目录存在且包含 .doc 静态测试文件
#### Scenario: xls 静态文件目录
- **WHEN** 查看 `tests/test_readers/fixtures/xls/`
- **THEN** 目录存在且包含 .xls 静态测试文件
#### Scenario: ppt 静态文件目录
- **WHEN** 查看 `tests/test_readers/fixtures/ppt/`
- **THEN** 目录存在且包含 .ppt 静态测试文件
### Requirement: fixtures 目录所有文件纳入 Git LFS
`tests/test_readers/fixtures/` 目录下的 ALL 文件 MUST 纳入 Git LFS 管理。
#### Scenario: .gitattributes 配置正确
- **WHEN** 查看 `.gitattributes`
- **THEN** 包含 `tests/test_readers/fixtures/**/*` 的 LFS 配置,匹配该目录下所有文件
### Requirement: fixtures 目录仅存放静态文件
`tests/test_readers/fixtures/` 目录 MUST 仅用于存放预先准备的静态测试文件,禁止在测试中向该目录动态生成临时文件。
#### Scenario: 不向 fixtures 目录写入临时文件
- **WHEN** 测试运行时
- **THEN** 不会在 `tests/test_readers/fixtures/` 下创建或修改文件
- **AND** 临时文件使用 pytest 的 tmp_path 在其他位置创建
### Requirement: 静态测试文件 Fixture
`tests/test_readers/conftest.py` MUST 提供访问静态测试文件的 fixtures。
#### Scenario: 提供目录路径 fixture
- **WHEN** 测试需要访问静态文件目录
- **THEN** 可以使用 `doc_fixture_path``xls_fixture_path``ppt_fixture_path` 获取对应目录路径
#### Scenario: 提供单个文件 fixture
- **WHEN** 测试需要访问特定静态文件
- **THEN** 可以使用 `simple_doc_path``with_headings_doc_path` 等便捷 fixture
- **AND** 文件不存在时自动 pytest.skip
### Requirement: fixtures 使用规范写入开发文档
fixtures 目录的使用规范 MUST 写入 README.md 开发文档。
#### Scenario: README 包含 fixtures 规范
- **WHEN** 查看 README.md
- **THEN** 包含 fixtures 目录的用途说明
- **AND** 包含静态文件与临时文件的区别说明
- **AND** 包含 Git LFS 配置说明