2.9 KiB
2.9 KiB
代码覆盖率报告
- 日期:2026-08-09
- 工具:
pytest-cov7.1.0 /coverage7.15.4 - 范围:
src/genesis(排除 tests 自身) - 阈值:
fail_under = 99(pyproject.toml[tool.coverage.report]),未达标时 pytest 退出码非 0 - 全量用例:71 passed,无 skip
- 输出:终端摘要(
--cov-report=term-missing)、HTML(htmlcov/index.html,已 .gitignore)
总览
| 指标 | 值 |
|---|---|
| 语句总数 | 563(含 pragma 排除的不可达防御分支) |
| 未覆盖语句 | 0 |
| 分支总数 | 140 |
| 未覆盖分支 | 0 |
| 总覆盖率 | 100.00% |
分模块(全部 100%)
| 模块 | Stmts | Miss | Branch | BrPart | Cover |
|---|---|---|---|---|---|
__init__.py |
1 | 0 | — | — | 100% |
config.py |
128 | 0 | 24 | 0 | 100% |
data_models.py |
180 | 0 | — | — | 100% |
parsers/excel_parser.py |
73 | 0 | 28 | 0 | 100% |
parsers/excel_reader.py |
12 | 0 | 2 | 0 | 100% |
parsers/formatting_detector.py |
40 | 0 | 20 | 0 | 100% |
parsers/free_text_extractor.py |
22 | 0 | 10 | 0 | 100% |
parsers/merge_fill.py |
15 | 0 | 10 | 0 | 100% |
parsers/paragraph_splitter.py |
17 | 0 | 10 | 0 | 100% |
parsers/provenance.py |
2 | 0 | — | — | 100% |
parsers/sheet_detector.py |
20 | 0 | 14 | 0 | 100% |
parsers/sheet_nature.py |
29 | 0 | 12 | 0 | 100% |
parsers/table_extractor.py |
24 | 0 | 10 | 0 | 100% |
达到 100% 的补充(相对首次基线 96.67%)
新增 13 个防御/边界用例覆盖了此前未触达的分支:
test_sheet_nature.py:空矩阵→FREE_TEXT、稀疏多列(非空占比<0.7)→FREE_TEXT、有表头无 ・/■ 行→TABLEtest_table_extractor.py:空矩阵→空表、header_row越界/负值回落 0test_formatting_detector.py:6/8 位十六进制接受、纯黑/主题色/非法 hex/长度不足/访问异常→None、仅背景色命中、fill=None防御分支test_config.py:_expand_env的 list 分值(列表内递归展开占位)test_excel_parser.py:空 sheet→skipped、碎片段格式不污染表格段seg_fmt_map(66→65)- pragma 标注两处不可达防御分支:
excel_parser两处header_row<0回落(classify_sheet==TABLE恒有表头)、sheet_nature的header_row>=0检测(_free_text_like()==False恒含表头)
门槛策略
fail_under = 99(余量 1%):未来若引入未测的新模块/分支(LLM 结构化、Writer 等),需为新代码补测试或显式# pragma: no cover标注不可达防御分支,否则 CI 拦截- 每次
python -m pytest默认附带覆盖率检查 - 报告归档:本文件(docs/)+ HTML(htmlcov/,不纳入 git)
后续可选增强(非当前阻塞)
- 将
fail_under保持 99 并作为 CI 红线 - 对 LLM 相关(InferenceEngine)等后续模块按同样标准配置覆盖率
- 可将 HTML 报告接入 CI artifact 归档