Files
PlantAI-rag-new/sdk/app/services/test_docgen_md2pdf.py
T
jerryandClaude Fable 5 5888e1d5c1 test(docgen): 测试治理资产——131 条验收用例 + 三轮留痕 + E2E/回归套件
- tests/docgen/:DC-UNIT/API/CONF/E2E/UI/REGRESSION/PERF 分组用例与可复跑脚本,报告逐条留痕(R1-R3 全记录)
- 意图 30 条前后端同表双跑(pytest + node)
- Playwright headless:docgen-ui/docgen-regression spec + b3 benchpanel 第 5 TAB 断言更新

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-03 21:13:47 +08:00

62 lines
1.6 KiB
Python

"""test_md2pdf.py —— md2pdf 冒烟(tmpdir,不连任何服务)。"""
from __future__ import annotations
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2]))
import pymupdf # noqa: E402
from app.services.docgen.md2pdf import pdf_from_markdown # noqa: E402
MD_SAMPLE = """# 项目总结报告
这是第一段正文,介绍项目背景与目标。
## 一、工作进展
- 完成模块一开发
- 完成模块二联调
| 指标 | 数值 |
|------|------|
| 完成率 | 95% |
"""
def test_pdf_smoke(tmp_path):
out = pdf_from_markdown(MD_SAMPLE, tmp_path / "out.pdf")
assert out.exists()
assert out.stat().st_size > 500 # 非空 PDF
doc = pymupdf.open(str(out))
try:
assert doc.page_count >= 1
text = "".join(p.get_text() for p in doc)
# 中文必须可提取(真实 CJK 字体渲染;wps-office 缺失时 Noto 兜底)
assert "项目总结报告" in text
assert "工作进展" in text
finally:
doc.close()
def test_pdf_empty_markdown(tmp_path):
out = pdf_from_markdown("", tmp_path / "empty.pdf")
assert out.exists()
doc = pymupdf.open(str(out))
try:
assert doc.page_count >= 1
finally:
doc.close()
def test_pdf_long_markdown_multi_page(tmp_path):
body = "\n\n".join(f"第 {i} 段内容,用于填充多页文档。" for i in range(200))
out = pdf_from_markdown("# 长文档\n\n" + body, tmp_path / "long.pdf")
doc = pymupdf.open(str(out))
try:
assert doc.page_count >= 2
finally:
doc.close()