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:
@@ -51,3 +51,18 @@ DOC 文档解析能力,支持解析 Microsoft Word 97-2003 旧格式文档。
|
||||
#### Scenario: pypandoc 解析器在独立文件
|
||||
- **WHEN** 使用 pypandoc 解析器
|
||||
- **THEN** 从 readers/doc/pypandoc.py 导入
|
||||
|
||||
### Requirement: DOC Reader 测试使用静态文件
|
||||
DOC Reader 测试 MUST 使用 `tests/test_readers/fixtures/doc/` 下的静态文件。
|
||||
|
||||
#### Scenario: 测试使用 simple.doc
|
||||
- **WHEN** 测试 DOC Reader 基础解析能力
|
||||
- **THEN** 使用 `simple.doc` 静态文件
|
||||
|
||||
#### Scenario: 测试使用 with_headings.doc
|
||||
- **WHEN** 测试 DOC Reader 标题解析
|
||||
- **THEN** 使用 `with_headings.doc` 静态文件
|
||||
|
||||
#### Scenario: 测试使用 with_table.doc
|
||||
- **WHEN** 测试 DOC Reader 表格解析
|
||||
- **THEN** 使用 `with_table.doc` 静态文件
|
||||
|
||||
@@ -36,3 +36,18 @@ PPT 文档解析能力,支持解析 Microsoft PowerPoint 97-2003 旧格式文
|
||||
#### Scenario: markitdown 解析器在独立文件
|
||||
- **WHEN** 使用 markitdown 解析器
|
||||
- **THEN** 从 readers/ppt/markitdown.py 导入
|
||||
|
||||
### Requirement: PPT Reader 测试使用静态文件
|
||||
PPT Reader 测试 MUST 使用 `tests/test_readers/fixtures/ppt/` 下的静态文件。
|
||||
|
||||
#### Scenario: 测试使用 simple.ppt
|
||||
- **WHEN** 测试 PPT Reader 基础解析能力
|
||||
- **THEN** 使用 `simple.ppt` 静态文件
|
||||
|
||||
#### Scenario: 测试使用 multiple_slides.ppt
|
||||
- **WHEN** 测试 PPT Reader 多幻灯片解析
|
||||
- **THEN** 使用 `multiple_slides.ppt` 静态文件
|
||||
|
||||
#### Scenario: 测试使用 with_images.ppt
|
||||
- **WHEN** 测试 PPT Reader 图片处理(可选)
|
||||
- **THEN** 使用 `with_images.ppt` 静态文件
|
||||
|
||||
@@ -117,3 +117,60 @@ Reader MUST 正确处理包含特殊字符的内容。
|
||||
#### Scenario: 每个 PDF Reader 有独立测试
|
||||
- **WHEN** 查看 test_readers/test_pdf/ 目录
|
||||
- **THEN** 存在 test_pypdf.py、test_markitdown.py、test_docling.py 等独立文件
|
||||
|
||||
### Requirement: 旧格式文档测试覆盖
|
||||
doc/xls/ppt 旧格式文档 MUST 有与新格式(docx/xlsx/pptx)一致的测试覆盖。
|
||||
|
||||
#### Scenario: doc 有一致性测试
|
||||
- **WHEN** 查看 `tests/test_readers/test_doc/`
|
||||
- **THEN** 存在 `test_consistency.py` 测试所有 DOC Readers 解析结果一致性
|
||||
|
||||
#### Scenario: xls 有一致性测试
|
||||
- **WHEN** 查看 `tests/test_readers/test_xls/`
|
||||
- **THEN** 存在 `test_consistency.py` 测试所有 XLS Readers 解析结果一致性
|
||||
|
||||
#### Scenario: ppt 有一致性测试
|
||||
- **WHEN** 查看 `tests/test_readers/test_ppt/`
|
||||
- **THEN** 存在 `test_consistency.py` 测试所有 PPT Readers 解析结果一致性
|
||||
|
||||
#### Scenario: doc 各解析器独立测试
|
||||
- **WHEN** 查看 `tests/test_readers/test_doc/`
|
||||
- **THEN** 每个解析器有独立测试文件(如 `test_markitdown_doc.py`、`test_pypandoc_doc.py`)
|
||||
|
||||
#### Scenario: xls 各解析器独立测试
|
||||
- **WHEN** 查看 `tests/test_readers/test_xls/`
|
||||
- **THEN** 每个解析器有独立测试文件(如 `test_markitdown_xls.py`、`test_unstructured_xls.py`、`test_pandas_xls.py`)
|
||||
|
||||
#### Scenario: ppt 各解析器独立测试
|
||||
- **WHEN** 查看 `tests/test_readers/test_ppt/`
|
||||
- **THEN** 每个解析器有独立测试文件(如 `test_markitdown_ppt.py`)
|
||||
|
||||
### Requirement: 旧格式测试使用静态文件
|
||||
旧格式文档测试 MUST 使用静态测试文件,而非尝试自动化创建。
|
||||
|
||||
#### Scenario: doc 测试使用静态文件
|
||||
- **WHEN** 运行 doc 相关测试
|
||||
- **THEN** 测试从 `tests/test_readers/fixtures/doc/` 读取静态文件
|
||||
|
||||
#### Scenario: xls 测试使用静态文件
|
||||
- **WHEN** 运行 xls 相关测试
|
||||
- **THEN** 测试从 `tests/test_readers/fixtures/xls/` 读取静态文件
|
||||
|
||||
#### Scenario: ppt 测试使用静态文件
|
||||
- **WHEN** 运行 ppt 相关测试
|
||||
- **THEN** 测试从 `tests/test_readers/fixtures/ppt/` 读取静态文件
|
||||
|
||||
### Requirement: 静态文件缺失时优雅跳过
|
||||
当静态测试文件不存在时,测试 MUST 优雅跳过,而非失败。
|
||||
|
||||
#### Scenario: doc 静态文件不存在时跳过
|
||||
- **WHEN** `simple.doc` 不存在
|
||||
- **THEN** 相关测试使用 `pytest.skip()` 跳过
|
||||
|
||||
#### Scenario: xls 静态文件不存在时跳过
|
||||
- **WHEN** `simple.xls` 不存在
|
||||
- **THEN** 相关测试使用 `pytest.skip()` 跳过
|
||||
|
||||
#### Scenario: ppt 静态文件不存在时跳过
|
||||
- **WHEN** `simple.ppt` 不存在
|
||||
- **THEN** 相关测试使用 `pytest.skip()` 跳过
|
||||
|
||||
@@ -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 配置说明
|
||||
|
||||
@@ -66,3 +66,18 @@ XLS 文档解析能力,支持解析 Microsoft Excel 97-2003 旧格式文档。
|
||||
#### Scenario: pandas 解析器在独立文件
|
||||
- **WHEN** 使用 pandas 解析器
|
||||
- **THEN** 从 readers/xls/pandas.py 导入
|
||||
|
||||
### Requirement: XLS Reader 测试使用静态文件
|
||||
XLS Reader 测试 MUST 使用 `tests/test_readers/fixtures/xls/` 下的静态文件。
|
||||
|
||||
#### Scenario: 测试使用 simple.xls
|
||||
- **WHEN** 测试 XLS Reader 基础解析能力
|
||||
- **THEN** 使用 `simple.xls` 静态文件
|
||||
|
||||
#### Scenario: 测试使用 multiple_sheets.xls
|
||||
- **WHEN** 测试 XLS Reader 多工作表解析
|
||||
- **THEN** 使用 `multiple_sheets.xls` 静态文件
|
||||
|
||||
#### Scenario: 测试使用 with_formulas.xls
|
||||
- **WHEN** 测试 XLS Reader 公式结果读取
|
||||
- **THEN** 使用 `with_formulas.xls` 静态文件
|
||||
|
||||
Reference in New Issue
Block a user