Files
md-vector-db/tests/test_splitters_pdf.py
T

50 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""PDFSplitter 测试."""
import pytest
from pathlib import Path
pymupdf = pytest.importorskip("fitz", reason="pymupdf 未安装")
class TestPDFSplitter:
"""PDFSplitter 测试(需 pymupdf."""
def test_split_simple_pdf(self, tmp_path):
"""用 pymupdf 创建一个简单 PDF 并测试分块."""
from src.core.splitters.pdf import PDFSplitter
import fitz
pdf_path = tmp_path / "test.pdf"
doc = fitz.open()
# 插入纯 ASCII 文本避免 CJK 字体编码问题
doc.new_page().insert_text((72, 72), "This is PDF document content.\n\nSecond paragraph text.")
doc.save(str(pdf_path))
doc.close()
s = PDFSplitter(max_size=500)
chunks = s.split(str(pdf_path), source_file="test.pdf")
assert len(chunks) >= 1
all_text = "".join(c["content"] for c in chunks)
assert "PDF document" in all_text
assert "Second paragraph" in all_text
def test_empty_pdf(self, tmp_path):
"""空 PDF(有页但无文字)返回空列表."""
from src.core.splitters.pdf import PDFSplitter
import fitz
pdf_path = tmp_path / "empty.pdf"
doc = fitz.open()
doc.new_page() # pymupdf 必须有至少一页才能保存
doc.save(str(pdf_path))
doc.close()
s = PDFSplitter()
chunks = s.split(str(pdf_path), source_file="empty.pdf")
assert chunks == []
def test_pdf_has_split_method(self):
"""PDFSplitter 遵循 Splitter Protocol."""
from src.core.splitters.pdf import PDFSplitter
s = PDFSplitter()
assert hasattr(s, "split")