У меня это не привычка, но иногда, чтобы обойти циклический импорт, я импортирую функцию из другой функции или метода, например:
Код: Выделить всё
class MyClass:
def my_method(self):
from somewhere import the_thing
x = the_thing()
return x + 4
Это прекрасно работает, но я не могу понять, как это проверить. Моя обычная ошибка связана с жалобами на то, что у модуля "xyz" нет атрибута "the_thing":
Код: Выделить всё
from unittest import TestCase
from unittest.mock import patch
class MyTestCase(TestCase):
@patch("path.to.my.module.the_thing")
def test_stuff(self):
...
Есть ли способ имитировать функции, импортированные во время выполнения? Есть ли лучший способ сделать это?
Подробнее здесь:
https://stackoverflow.com/questions/761 ... -or-method