60 lines
2.4 KiB
Python
60 lines
2.4 KiB
Python
import os
|
|
import unittest
|
|
from unittest.mock import patch, MagicMock
|
|
from src.main import TempFolderCleaner
|
|
|
|
class TestCleanTempFolder(unittest.TestCase):
|
|
|
|
@patch('src.main.os.environ.get')
|
|
@patch('src.main.os.walk')
|
|
@patch('src.main.os.remove')
|
|
def test_clean_temp_folder(self, mock_remove, mock_walk, mock_get_env):
|
|
# Настройка тестовой среды
|
|
mock_get_env.return_value = '/mock/temp'
|
|
mock_walk.return_value = [
|
|
('/mock/temp', ('subdir',), ('file1.txt', 'file2.txt')),
|
|
('/mock/temp/subdir', (), ('file3.txt',))
|
|
]
|
|
|
|
cleaner = TempFolderCleaner()
|
|
cleaner.clean_temp_folder()
|
|
|
|
# Проверка, что os.remove был вызван для каждого файла
|
|
mock_remove.assert_any_call('/mock/temp/file1.txt')
|
|
mock_remove.assert_any_call('/mock/temp/file2.txt')
|
|
mock_remove.assert_any_call('/mock/temp/subdir/file3.txt')
|
|
self.assertEqual(mock_remove.call_count, 3)
|
|
|
|
@patch('src.main.os.environ.get')
|
|
@patch('src.main.os.walk')
|
|
@patch('src.main.os.remove')
|
|
def test_clean_temp_folder_with_errors(self, mock_remove, mock_walk, mock_get_env):
|
|
# Настройка тестовой среды
|
|
mock_get_env.return_value = '/mock/temp'
|
|
mock_walk.return_value = [
|
|
('/mock/temp', ('subdir',), ('file1.txt', 'file2.txt')),
|
|
('/mock/temp/subdir', (), ('file3.txt',))
|
|
]
|
|
mock_remove.side_effect = [None, Exception("Ошибка удаления"), None]
|
|
|
|
cleaner = TempFolderCleaner()
|
|
cleaner.clean_temp_folder()
|
|
|
|
# Проверка, что os.remove был вызван для каждого файла и обработка ошибок
|
|
mock_remove.assert_any_call('/mock/temp/file1.txt')
|
|
mock_remove.assert_any_call('/mock/temp/file2.txt')
|
|
mock_remove.assert_any_call('/mock/temp/subdir/file3.txt')
|
|
self.assertEqual(mock_remove.call_count, 3)
|
|
|
|
@patch('src.main.os.environ.get')
|
|
def test_temp_folder_not_found(self, mock_get_env):
|
|
# Настройка тестовой среды
|
|
mock_get_env.return_value = None
|
|
|
|
cleaner = TempFolderCleaner()
|
|
with self.assertLogs(level='WARNING') as log:
|
|
cleaner.clean_temp_folder()
|
|
self.assertIn('Папка Temp не найдена.', log.output[0])
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |