Вам нужно пропатчить его , где он импортируется. Допустим, файл, в котором находится ModuleName
, называется my_class.py
. Чтобы правильно его смоделировать, вам нужно сделать @patch(path.to.my_class.py)
. Ниже приведен короткий пример, иллюстрирующий это.
# demo/my_class.py
from shutil import copyfile
class ModuleName:
@staticmethod
def method_being_tested(source, destination):
copyfile(source, destination)
# test_my_class.py
from unittest.mock import patch
from demo.my_class import ModuleName
@patch("demo.my_class.copyfile")
def test_my_module(mock_copy):
ModuleName.method_being_tested(1, 2)
mock_copy.assert_called_once()
Выполнение вышеуказанного успешно и показывает, что мы успешно высмеяли copyfile
. Возможно, вам будет полезно прочитать о , где для исправления, как показано в документации здесь .