Моя структура каталогов выглядит следующим образом:
myproject/
├── mymodule/
│ ├── foo.py
│ └── model/
│ └── functions.py
│
└── tests/
└── footest.py
Мой foo.py
файл имеет локальный импорт, который выглядит следующим образом:
from .model.functions import MyClass
Я пытаюсь смоделировать один изМетоды MyClass в одном из моих тестов, но я не могу понять, как использовать для этого декоратор @patch
. Обычно я делаю это:
class CheckLambdaHandler(unittest.TestCase):
@patch('requests.post')
def test_post_error(self, mocked_post):
# Test which uses requests.post
Но когда я пытаюсь сделать что-то похожее с локальным импортом, он ломается:
class CheckLambdaHandler(unittest.TestCase):
@patch('.model.functions.MyClass.function')
def test_post_error(self, mocked_post):
# Test which uses requests.post
Поскольку я думаю, @patch разбивает строку на "«. что означает, что вы не можете использовать локальный импорт?
ValueError: Empty module name
Кто-нибудь еще знает, что здесь делать? Нужно ли мне изменить свой импорт? В тесте? В актуальном коде?