Я пытаюсь провести очень простой тест, в котором моя функция принимает один параметр - путь к базе данных, пытается подключиться к базе данных с помощью pyodbc.connect (путь к базе данных), и, если путь неверен, выдает ошибку,Тем не менее, поскольку мой тест структурирован в настоящее время, я не могу выполнить тест (повысить ошибку) при прохождении тестируемой функции по неверному пути.
Я пытался пройти тест, используя макеты ибез насмешек.Я полагаю, что правильным способом было бы использовать макеты, однако я также не мог заставить это работать (см. Код ниже).Я нашел вопросы, которые были похожи на мою проблему, но я не мог использовать предложения в этих вопросах, чтобы заставить мой тест работать.
Проверяемая функция
import pyodbc
# When function runs by itself (no test) pyodbc.InterfaceError is raised if database path is bad!
def connect_to_database(database):
try:
conn = pyodbc.connect(database)
return conn
except pyodbc.InterfaceError as err:
raise err
Испытания
Без насмешек
def test_invalid_path_to_database(self):
self.assertRaises(pyodbc.InterfaceError, connect_to_database, '')
С насмешками
def setUp(self):
self.mock_conn= mock.patch('my_package.my_module.pyodbc.connect').start()
self.addCleanup(mock.patch.stopall)
def test_invalid_path_to_database(self):
self.mock_conn.side_effect = pyodbc.InterfaceError
self.assertRaises(pyodbc.InterfaceError, connect_to_database, '')
Я ожидаю, когдапереданный путь базы данных к функции недопустим, должна возникнуть ошибка (в этом случае InterfaceError) и тест должен пройти.Это не происходит, поскольку тест структурирован.