Попытка смоделировать зависимость, но ее код инициализации все еще выполняется - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь смоделировать зависимость в моем модульном тесте, но код инициализации этой зависимости все еще выполняется. Вот моя структура кода:

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

...