Имитация подключения к базе данных ⇐ Python
-
Anonymous
Имитация подключения к базе данных
У меня есть соединитель базы данных, который имеет соединение в конструкторе. Мне удалось имитировать соединение, и утверждение проходит при проверке двух типов данных, но утверждение завершается неудачей, поскольку значения «result» не соответствуют значениям «mock_data». Мок-данные возвращают Мок-объект (). Я уверен, что проблема связана с менеджером контекста внутри метода get_data(), но я не могу заставить его работать. Кто-нибудь, пожалуйста, помогите мне, как добиться совпадения значений.
Файл database_connector.py
@dataclass класс DatabaseConnector: движок_базы_данных: ул экземпляр: str = "прочитать" защита __post_init__(сам): self.database_engine = "".join(filter(str.isalnum, self.database_engine.lower())) self.instance = "".join(filter(str.isalnum, self.instance.lower())) self.connection = self.get_connection() def get_connection(self) -> Соединение: кваргс = { «база данных»: хост, «хост»: хост, «пользователь»: пользователь, «пароль»: пароль, «порт»: порт } вернуть pg8000.connect(**kwargs) def get_data(self, query: str) -> list[tuple]: с self.connection.cursor() в качестве курсора: курсор.execute (запрос) данные = курсор.fetchall() возвращать данные Файл mock_db.py
db_path = "connectors.database.database_connector.DatabaseConnector" класс TestSPO(unittest.TestCase): @patch("database_connector.DatabaseConnector.get_data") @patch("database_connector.DatabaseConnector.get_connection") Защиту test_connection (сам, макет_соединения, макет_данных): макет_запись = (0, «1») ock_data.return_value = (0, «1») mock_connection.return_value = Mock() ожидаемый_результат = InboundVolume().get_inbound_volume() self.assertEqual(ожидаемый_результат, макет_запись)
У меня есть соединитель базы данных, который имеет соединение в конструкторе. Мне удалось имитировать соединение, и утверждение проходит при проверке двух типов данных, но утверждение завершается неудачей, поскольку значения «result» не соответствуют значениям «mock_data». Мок-данные возвращают Мок-объект (). Я уверен, что проблема связана с менеджером контекста внутри метода get_data(), но я не могу заставить его работать. Кто-нибудь, пожалуйста, помогите мне, как добиться совпадения значений.
Файл database_connector.py
@dataclass класс DatabaseConnector: движок_базы_данных: ул экземпляр: str = "прочитать" защита __post_init__(сам): self.database_engine = "".join(filter(str.isalnum, self.database_engine.lower())) self.instance = "".join(filter(str.isalnum, self.instance.lower())) self.connection = self.get_connection() def get_connection(self) -> Соединение: кваргс = { «база данных»: хост, «хост»: хост, «пользователь»: пользователь, «пароль»: пароль, «порт»: порт } вернуть pg8000.connect(**kwargs) def get_data(self, query: str) -> list[tuple]: с self.connection.cursor() в качестве курсора: курсор.execute (запрос) данные = курсор.fetchall() возвращать данные Файл mock_db.py
db_path = "connectors.database.database_connector.DatabaseConnector" класс TestSPO(unittest.TestCase): @patch("database_connector.DatabaseConnector.get_data") @patch("database_connector.DatabaseConnector.get_connection") Защиту test_connection (сам, макет_соединения, макет_данных): макет_запись = (0, «1») ock_data.return_value = (0, «1») mock_connection.return_value = Mock() ожидаемый_результат = InboundVolume().get_inbound_volume() self.assertEqual(ожидаемый_результат, макет_запись)