что-то вроде этого может помочь, но вы должны расположить его до вашего импорта того, что содержит classToTest.
import sys
try:
import module_b
except (ImportError,) as e:
from unittest.mock import Mock
module_b = Mock()
module_b.module_c = module_b
def func():
return 10
module_b.func = func
sys.modules["module_b"] = module_b
#import your code under test
С self.assertEqual(classToTest().foo(), 12)
Я получил ошибку, что 11 <> 12, он не был доволен числом, не совпадающим, поэтому поддельный module_b был принят.
Обратите внимание, я только играл с подделкой импорта module_b. Как указывало Code-Apprentice, у всей тестовой структуры, вероятно, есть проблемы.
2-е предупреждение: я бы не стал делать это, чтобы каким-то образом подделать установленный module_b
, который не был установлен. system.modules
, как только в нем будет зарегистрирована эта насмешка, нужно будет привести в порядок. reload
должен это сделать, но кто знает? в этом случае обычный mock/patch
может дать лучшие результаты.