Initial commit: AI 知识库文档智能分块工具

This commit is contained in:
AI Knowledge Splitter
2026-03-02 17:38:28 +08:00
commit 92e7fc5bda
160 changed files with 9577 additions and 0 deletions

64
tests/test_exceptions.py Normal file
View File

@@ -0,0 +1,64 @@
"""异常类型单元测试"""
import pytest
from exceptions import ApiError, ParseError, RateLimitError, UnsupportedFormatError
class TestParseError:
def test_attributes(self):
err = ParseError("test.pdf", "文件损坏")
assert err.file_name == "test.pdf"
assert err.reason == "文件损坏"
def test_message_format(self):
err = ParseError("data.csv", "编码无法识别")
assert str(err) == "解析失败 [data.csv]: 编码无法识别"
def test_is_exception(self):
err = ParseError("f.txt", "reason")
assert isinstance(err, Exception)
class TestUnsupportedFormatError:
def test_inherits_parse_error(self):
err = UnsupportedFormatError("file.xyz", ".xyz")
assert isinstance(err, ParseError)
def test_extension_attribute(self):
err = UnsupportedFormatError("file.abc", ".abc")
assert err.extension == ".abc"
def test_message_format(self):
err = UnsupportedFormatError("doc.bin", ".bin")
assert str(err) == "解析失败 [doc.bin]: 不支持的文件格式: .bin"
def test_file_name_propagated(self):
err = UnsupportedFormatError("my_file.xyz", ".xyz")
assert err.file_name == "my_file.xyz"
assert err.reason == "不支持的文件格式: .xyz"
class TestApiError:
def test_with_status_code(self):
err = ApiError("服务端错误", status_code=500)
assert err.status_code == 500
assert str(err) == "服务端错误"
def test_without_status_code(self):
err = ApiError("网络错误")
assert err.status_code is None
assert str(err) == "网络错误"
def test_is_exception(self):
assert isinstance(ApiError("msg"), Exception)
class TestRateLimitError:
def test_inherits_api_error(self):
err = RateLimitError("速率限制", status_code=429)
assert isinstance(err, ApiError)
def test_status_code(self):
err = RateLimitError("速率限制", status_code=429)
assert err.status_code == 429
assert str(err) == "速率限制"