- 测试数量从 83 个增加到 193 个 (+132%) - 代码覆盖率从 48% 提升到 69% (+44%) - 为每种文档格式的所有 Reader 实现创建独立测试 - 添加跨 Reader 的一致性验证测试 - 新增 4 个测试规范 (cli-testing, exception-testing, reader-testing, test-fixtures) - 更新 README 测试统计信息 测试覆盖: - DOCX: python-docx, markitdown, docling, native-xml, pypandoc, unstructured - PDF: pypdf, markitdown, docling, docling-ocr, unstructured, unstructured-ocr - HTML: html2text, markitdown, trafilatura, domscribe - PPTX: python-pptx, markitdown, docling, native-xml, unstructured - XLSX: pandas, markitdown, docling, native-xml, unstructured - CLI: 所有命令行选项和错误处理 所有 193 个测试通过。
3.7 KiB
3.7 KiB
CLI Testing Specification
Purpose
定义 CLI 命令行工具的功能测试规范,包括输出格式、选项处理、错误处理等。
Requirements
Requirement: CLI 输出解析内容
CLI 在不指定任何选项时,MUST 输出完整的解析后 Markdown 内容到标准输出。
Scenario: 解析 DOCX 文件
- WHEN 用户执行
python lyxy_document_reader.py file.docx - THEN 标准输出包含解析后的 Markdown 内容
Scenario: 解析 PDF 文件
- WHEN 用户执行
python lyxy_document_reader.py file.pdf - THEN 标准输出包含解析后的 Markdown 内容
Scenario: 解析 HTML 文件
- WHEN 用户执行
python lyxy_document_reader.py file.html - THEN 标准输出包含解析后的 Markdown 内容
Requirement: CLI 统计字数
CLI 使用 -c 或 --count 选项时,MUST 输出解析后内容的字符总数(不包含换行符)。
Scenario: 统计 DOCX 字数
- WHEN 用户执行
python lyxy_document_reader.py file.docx -c - THEN 标准输出仅包含一个表示字符总数的数字
Requirement: CLI 统计行数
CLI 使用 -l 或 --lines 选项时,MUST 输出解析后的行数。
Scenario: 统计行数
- WHEN 用户执行
python lyxy_document_reader.py file.docx -l - THEN 标准输出仅包含一个表示行数的数字
Requirement: CLI 提取标题
CLI 使用 -t 或 --titles 选项时,MUST 输出所有 1-6 级标题行。
Scenario: 提取所有标题
- WHEN 用户执行
python lyxy_document_reader.py file.docx -t - THEN 标准输出包含所有标题行,每行一个标题
Requirement: CLI 提取标题内容
CLI 使用 -tc 或 --title-content 选项时,MUST 输出指定标题及其下级内容。
Scenario: 提取存在的标题内容
- WHEN 用户执行
python lyxy_document_reader.py file.docx -tc "章节标题" - THEN 标准输出包含该标题及其下级内容(不包含 # 号)
Scenario: 提取不存在的标题
- WHEN 用户执行
python lyxy_document_reader.py file.docx -tc "不存在的标题" - THEN 程序输出错误信息并以非零状态退出
Requirement: CLI 搜索内容
CLI 使用 -s 或 --search 选项时,MUST 使用正则表达式搜索文档并输出匹配结果。
Scenario: 搜索匹配内容
- WHEN 用户执行
python lyxy_document_reader.py file.docx -s "关键词" - THEN 标准输出包含所有匹配的上下文,用
---分隔
Scenario: 搜索无匹配内容
- WHEN 用户执行
python lyxy_document_reader.py file.docx -s "不存在的内容" - THEN 程序输出错误信息并以非零状态退出
Scenario: 搜索使用上下文行数
- WHEN 用户执行
python lyxy_document_reader.py file.docx -s "关键词" -n 5 - THEN 输出每个匹配结果前后各 5 行非空内容
Requirement: CLI 错误处理
CLI 遇到错误时,MUST 输出清晰的错误信息并以非零状态退出。
Scenario: 文件不存在
- WHEN 用户执行
python lyxy_document_reader.py nonexistent.docx - THEN 程序输出错误信息并以状态码 1 退出
Scenario: 不支持的文件类型
- WHEN 用户执行
python lyxy_document_reader.py unsupported.xyz - THEN 程序输出未找到支持 reader 的错误信息
Scenario: 所有解析方法失败
- WHEN 所有 Reader 解析均失败
- THEN 程序输出各 Reader 的失败原因列表
Requirement: CLI 选项互斥
CLI 的输出选项(-c、-l、-t、-tc、-s)MUST 互斥,不能同时使用。
Scenario: 默认输出与其他选项冲突
- WHEN 用户尝试使用多个输出选项
- THEN argparse 自动处理互斥,只允许一个选项生效