Я пытаюсь смоделировать зависимость в моем модульном тесте, но код инициализации этой зависимости все еще выполняется. Вот моя структура кода:
my_project
|_src
| |__dynamo_connector
| | |__dynamo_manager.py
| |__package_to_test
| | |__process_message.py
| | |__process_message_test.py
Файл dynamo_manager.py
выглядит примерно так:
import boto3
import ...
# This is the line causing the issue
dynamodb_client = boto3.client("dynamodb")
def add_item_to_dynamo(...):
...
Класс, который я хочу протестировать, process_message.py
, выглядит примерно так:
from my_project.src.dynamo_connector import add_item_to_dynamo
import ...
def method_to_test(...):
...
И вот как выглядит мой тест:
import unittest
from unittest import mock
from unittest.mock import patch
# The exception starts on this line
from process_message import method_to_test
class TestClass(unittest.TestCase):
@patch('process_message.my_project.src.dynamo_connector'):
def test_my_method(self, mocked_dynamo_connector):
print("Hello, world")
Моя проблема в том, что, хотя я высмеивал dynamo_connector
, строка boto3.client("dynamodb")
все еще выполняется,который генерирует исключение инициализации botocore. Как правильно издеваться над классом dynamo_manager
?
Я использую Python 3.6