Я новичок в модульном тестировании на Python и у меня проблемы с запуском моих тестов.Я хочу реализовать следующий тестовый класс, как показано здесь: https://www.toptal.com/python/an-introduction-to-mocking-in-python,, но слегка измененный.Вместо использования os.path.isfile
я хочу использовать pathlib.Path.is_file
.
Это фактический класс для тестирования:
import os
from pathlib import Path
class FileUtils:
@staticmethod
def isFile(file):
return Path(file).is_file()
@staticmethod
def deleteFile(file):
if FileUtils.isFile(file):
os.remove(file)
И это класс тестирования:
import mock, unittest
class FileUtilsTest(unittest.TestCase):
testFilename = "filename"
@mock.patch('FileUtils.Path')
@mock.patch('FileUtils.os')
def testDeleteFiles(self, osMock, pathMock):
pathMock.is_file.return_value = False
FileUtils.deleteFile(self.testFilename)
self.assertFalse(osMock.remove.called, 'Failed to not remove the file if not present.')
pathMock.is_file.return_value = True
FileUtils.deleteFile(self.testFilename)
osMock.remove.assert_called_with(self.testFilename)
Это приведет к следующему сообщению об ошибке:
Finding files... done.
Importing test modules ... done.
======================================================================
FAIL: testDeleteFile (FileUtilsTest.FileUtilsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\mock\mock.py", line 1305, in patched
return func(*args, **keywargs)
File "...\FileUtilsTest.py", line 13, in testDeleteFile
self.assertFalse(osMock.remove.called, 'Failed to not remove the file if not present.')
AssertionError: True is not false : Failed to not remove the file if not present.
----------------------------------------------------------------------
Ran 1 test in 0.003s
FAILED (failures=1)
Как проверить метод FileUtils.deleteFile
с помощью @mock.patch
декораторов?