test: 修复 EPUB 缺失依赖测试设计问题
This commit is contained in:
@@ -1,11 +1,30 @@
|
||||
"""EPUBSplitter 测试."""
|
||||
import pytest
|
||||
|
||||
ebooklib = pytest.importorskip("ebooklib", reason="ebooklib 未安装")
|
||||
|
||||
class TestEPUBSplitterMissingDep:
|
||||
"""缺失依赖时的行为测试(不 skip 整个文件)."""
|
||||
|
||||
def test_split_raises_clear_import_error(self, monkeypatch):
|
||||
"""未安装 ebooklib 时给出明确提示."""
|
||||
from src.core.splitters.epub import EPUBSplitter
|
||||
s = EPUBSplitter()
|
||||
import builtins
|
||||
original_import = builtins.__import__
|
||||
|
||||
def mock_import(name, *args, **kwargs):
|
||||
if name == "ebooklib" or name.startswith("ebooklib."):
|
||||
raise ImportError("No module named 'ebooklib'")
|
||||
return original_import(name, *args, **kwargs)
|
||||
|
||||
monkeypatch.setattr(builtins, "__import__", mock_import)
|
||||
with pytest.raises(ImportError, match="ebooklib"):
|
||||
s.split("dummy.epub", source_file="test.epub")
|
||||
|
||||
|
||||
class TestEPUBSplitter:
|
||||
"""EPUBSplitter 测试(需 ebooklib)."""
|
||||
ebooklib = pytest.importorskip("ebooklib", reason="ebooklib 未安装")
|
||||
|
||||
def test_split_simple_epub(self, tmp_path):
|
||||
"""用 ebooklib 创建一个简单 EPUB 并测试分块."""
|
||||
@@ -47,10 +66,3 @@ class TestEPUBSplitter:
|
||||
from src.core.splitters.epub import EPUBSplitter
|
||||
s = EPUBSplitter()
|
||||
assert hasattr(s, "split")
|
||||
|
||||
def test_epub_missing_dependency_message(self):
|
||||
"""EPUBSplitter.split() 在未安装 ebooklib 时应给出明确提示."""
|
||||
from src.core.splitters.epub import EPUBSplitter
|
||||
s = EPUBSplitter()
|
||||
# 验证 split 方法存在且可调用(有明确的 import error 信息)
|
||||
assert callable(s.split)
|
||||
|
||||
Reference in New Issue
Block a user