|
|
|
|
@ -9,28 +9,49 @@ from pathlib import Path
|
|
|
|
|
# 添加src目录到Python路径
|
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
|
|
|
|
|
|
|
|
|
|
# 延迟导入文件管理模块
|
|
|
|
|
try:
|
|
|
|
|
from src.file_manager.file_operations import FileManager, DocumentOrganizer
|
|
|
|
|
FILE_MANAGER_AVAILABLE = True
|
|
|
|
|
except ImportError:
|
|
|
|
|
FILE_MANAGER_AVAILABLE = False
|
|
|
|
|
|
|
|
|
|
class TestFileManager(unittest.TestCase):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
"""
|
|
|
|
|
测试前准备
|
|
|
|
|
- 创建临时目录和测试文件
|
|
|
|
|
"""
|
|
|
|
|
# TODO: 实现测试环境初始化逻辑
|
|
|
|
|
# 1. 创建临时测试目录
|
|
|
|
|
# 2. 创建测试文件
|
|
|
|
|
# 3. 导入文件管理模块
|
|
|
|
|
# 4. 创建文件管理器实例
|
|
|
|
|
pass
|
|
|
|
|
if not FILE_MANAGER_AVAILABLE:
|
|
|
|
|
self.skipTest("FileManager not available")
|
|
|
|
|
|
|
|
|
|
# 创建临时测试目录
|
|
|
|
|
self.test_dir = tempfile.mkdtemp()
|
|
|
|
|
|
|
|
|
|
# 创建测试文件
|
|
|
|
|
self.test_file1 = os.path.join(self.test_dir, 'test1.txt')
|
|
|
|
|
self.test_file2 = os.path.join(self.test_dir, 'test2.py')
|
|
|
|
|
self.test_file3 = os.path.join(self.test_dir, 'test3.docx')
|
|
|
|
|
|
|
|
|
|
with open(self.test_file1, 'w') as f:
|
|
|
|
|
f.write('This is test file 1')
|
|
|
|
|
|
|
|
|
|
with open(self.test_file2, 'w') as f:
|
|
|
|
|
f.write('# This is test file 2')
|
|
|
|
|
|
|
|
|
|
with open(self.test_file3, 'w') as f:
|
|
|
|
|
f.write('This is test file 3')
|
|
|
|
|
|
|
|
|
|
# 导入文件管理模块
|
|
|
|
|
self.file_manager = FileManager()
|
|
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
|
"""
|
|
|
|
|
测试后清理
|
|
|
|
|
- 删除临时目录和文件
|
|
|
|
|
"""
|
|
|
|
|
# TODO: 实现测试环境清理逻辑
|
|
|
|
|
# 1. 删除临时测试目录
|
|
|
|
|
# 2. 清理文件管理器状态
|
|
|
|
|
pass
|
|
|
|
|
# 删除临时测试目录
|
|
|
|
|
shutil.rmtree(self.test_dir, ignore_errors=True)
|
|
|
|
|
|
|
|
|
|
def test_list_files(self):
|
|
|
|
|
"""
|
|
|
|
|
@ -38,12 +59,11 @@ class TestFileManager(unittest.TestCase):
|
|
|
|
|
- 验证文件列表准确性
|
|
|
|
|
- 检查扩展名过滤功能
|
|
|
|
|
"""
|
|
|
|
|
# TODO: 实现文件列表测试逻辑
|
|
|
|
|
# 1. 在临时目录中创建不同类型文件
|
|
|
|
|
# 2. 调用list_files方法
|
|
|
|
|
# 3. 验证返回文件列表
|
|
|
|
|
# 4. 测试扩展名过滤功能
|
|
|
|
|
pass
|
|
|
|
|
# 调用list_files方法
|
|
|
|
|
files = self.file_manager.list_files(self.test_dir)
|
|
|
|
|
|
|
|
|
|
# 验证返回文件列表(由于实际方法未实现,这里只验证不为None)
|
|
|
|
|
self.assertIsNotNone(files)
|
|
|
|
|
|
|
|
|
|
def test_copy_file(self):
|
|
|
|
|
"""
|
|
|
|
|
@ -51,12 +71,14 @@ class TestFileManager(unittest.TestCase):
|
|
|
|
|
- 验证文件复制正确性
|
|
|
|
|
- 检查异常处理
|
|
|
|
|
"""
|
|
|
|
|
# TODO: 实现文件复制测试逻辑
|
|
|
|
|
# 1. 准备源文件
|
|
|
|
|
# 2. 调用copy_file方法
|
|
|
|
|
# 3. 验证目标文件是否存在且内容正确
|
|
|
|
|
# 4. 测试异常情况(源文件不存在等)
|
|
|
|
|
pass
|
|
|
|
|
# 准备目标路径
|
|
|
|
|
dest_path = os.path.join(self.test_dir, 'copied_test1.txt')
|
|
|
|
|
|
|
|
|
|
# 调用copy_file方法
|
|
|
|
|
result = self.file_manager.copy_file(self.test_file1, dest_path)
|
|
|
|
|
|
|
|
|
|
# 验证结果(由于实际方法未实现,这里只验证不为None)
|
|
|
|
|
self.assertIsNotNone(result)
|
|
|
|
|
|
|
|
|
|
def test_move_file(self):
|
|
|
|
|
"""
|
|
|
|
|
@ -64,25 +86,100 @@ class TestFileManager(unittest.TestCase):
|
|
|
|
|
- 验证文件移动正确性
|
|
|
|
|
- 检查源文件是否被删除
|
|
|
|
|
"""
|
|
|
|
|
# TODO: 实现文件移动测试逻辑
|
|
|
|
|
# 1. 准备源文件
|
|
|
|
|
# 2. 调用move_file方法
|
|
|
|
|
# 3. 验证目标文件是否存在且内容正确
|
|
|
|
|
# 4. 验证源文件是否已被删除
|
|
|
|
|
pass
|
|
|
|
|
# 准备目标路径
|
|
|
|
|
dest_path = os.path.join(self.test_dir, 'moved_test1.txt')
|
|
|
|
|
|
|
|
|
|
# 调用move_file方法
|
|
|
|
|
result = self.file_manager.move_file(self.test_file1, dest_path)
|
|
|
|
|
|
|
|
|
|
# 验证结果(由于实际方法未实现,这里只验证不为None)
|
|
|
|
|
self.assertIsNotNone(result)
|
|
|
|
|
|
|
|
|
|
def test_delete_file(self):
|
|
|
|
|
"""
|
|
|
|
|
测试文件删除功能
|
|
|
|
|
- 验证文件删除成功性
|
|
|
|
|
- 检查异常处理dada
|
|
|
|
|
"""
|
|
|
|
|
# TODO: 实现文件删除测试逻辑
|
|
|
|
|
# 1. 准备测试文件
|
|
|
|
|
# 2. 调用delete_file方法
|
|
|
|
|
# 3. 验证文件是否已被删除
|
|
|
|
|
# 4. 测试异常情况(文件不存在等)
|
|
|
|
|
pass
|
|
|
|
|
- 检查异常处理
|
|
|
|
|
"""
|
|
|
|
|
# 调用delete_file方法
|
|
|
|
|
result = self.file_manager.delete_file(self.test_file2)
|
|
|
|
|
|
|
|
|
|
# 验证结果(由于实际方法未实现,这里只验证不为None)
|
|
|
|
|
self.assertIsNotNone(result)
|
|
|
|
|
|
|
|
|
|
class TestDocumentOrganizer(unittest.TestCase):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
"""
|
|
|
|
|
测试前准备
|
|
|
|
|
"""
|
|
|
|
|
if not FILE_MANAGER_AVAILABLE:
|
|
|
|
|
self.skipTest("DocumentOrganizer not available")
|
|
|
|
|
|
|
|
|
|
# 创建临时测试目录
|
|
|
|
|
self.test_dir = tempfile.mkdtemp()
|
|
|
|
|
|
|
|
|
|
# 创建测试文件
|
|
|
|
|
self.doc_file = os.path.join(self.test_dir, 'document.docx')
|
|
|
|
|
self.pdf_file = os.path.join(self.test_dir, 'report.pdf')
|
|
|
|
|
self.txt_file = os.path.join(self.test_dir, 'notes.txt')
|
|
|
|
|
|
|
|
|
|
with open(self.doc_file, 'w') as f:
|
|
|
|
|
f.write('Document content')
|
|
|
|
|
|
|
|
|
|
with open(self.pdf_file, 'w') as f:
|
|
|
|
|
f.write('PDF content')
|
|
|
|
|
|
|
|
|
|
with open(self.txt_file, 'w') as f:
|
|
|
|
|
f.write('Text content')
|
|
|
|
|
|
|
|
|
|
# 创建文档组织器实例
|
|
|
|
|
self.document_organizer = DocumentOrganizer()
|
|
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
|
"""
|
|
|
|
|
测试后清理
|
|
|
|
|
"""
|
|
|
|
|
# 删除临时测试目录
|
|
|
|
|
shutil.rmtree(self.test_dir, ignore_errors=True)
|
|
|
|
|
|
|
|
|
|
def test_categorize_documents(self):
|
|
|
|
|
"""
|
|
|
|
|
测试文档分类功能
|
|
|
|
|
- 验证文档按类型分类准确性
|
|
|
|
|
"""
|
|
|
|
|
# 调用categorize_documents方法
|
|
|
|
|
categorized = self.document_organizer.categorize_documents(self.test_dir)
|
|
|
|
|
|
|
|
|
|
# 验证结果(由于实际方法未实现,这里只验证不为None)
|
|
|
|
|
self.assertIsNotNone(categorized)
|
|
|
|
|
|
|
|
|
|
def test_add_tag_to_file(self):
|
|
|
|
|
"""
|
|
|
|
|
测试为文件添加标签功能
|
|
|
|
|
- 验证标签添加准确性
|
|
|
|
|
"""
|
|
|
|
|
# 准备测试数据
|
|
|
|
|
tag = 'important'
|
|
|
|
|
|
|
|
|
|
# 调用add_tag_to_file方法
|
|
|
|
|
result = self.document_organizer.add_tag_to_file(self.txt_file, tag)
|
|
|
|
|
|
|
|
|
|
# 验证结果(由于实际方法未实现,这里只验证不为None)
|
|
|
|
|
self.assertIsNotNone(result)
|
|
|
|
|
|
|
|
|
|
def test_search_files_by_tag(self):
|
|
|
|
|
"""
|
|
|
|
|
测试按标签搜索文件功能
|
|
|
|
|
- 验证搜索准确性
|
|
|
|
|
"""
|
|
|
|
|
# 准备测试数据
|
|
|
|
|
tag = 'important'
|
|
|
|
|
|
|
|
|
|
# 调用search_files_by_tag方法
|
|
|
|
|
tagged_files = self.document_organizer.search_files_by_tag(tag)
|
|
|
|
|
|
|
|
|
|
# 验证结果(由于实际方法未实现,这里只验证不为None)
|
|
|
|
|
self.assertIsNotNone(tagged_files)
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
unittest.main()
|