Взгляните на следующий тестовый пример:
def test_1_check_version(self):
try:
self.version()
print('\n')
except cx_Oracle.DatabaseError as error_message:
print("Sorry Connection could not be established because "+str(error_message))
Выше это тестовый пример многих тестовых примеров, которые я пишу в Unittest из Python, и теперь я запускаю его, чтобы проверить, связано ли соединение базы данных или нет.
Если да, то он будет передавать "Номер версии базы данных".
Если нет, то это вызовет исключение, которое я обработал.
После запуска этого случая отдыха тестовый пример показывает пропуск в любой тестовой среде (Robot, unittest, pytest), которую я использовал.
Но я хочу, чтобы этот тестовый пример потерпел неудачу, потому что это не тот результат, который я ищу.
Обработка исключений, потому что я хочу видеть только сообщение об ошибке, а не все эти красные строки исключения.
Я открыт для любого предложения, будь то удаление исключений.
Поведение прохождения теста является ожидаемым. Тесты заканчиваются неудачно, если вы получаете результат, который не ожидался в каком-либо утверждении.
В вашем случае, если вы хотите, чтобы исключение было брошено, вы должны использовать:
self.assertRaises(cx_Oracle.DatabaseError, self.version())
Если вы хотите проверить правильность версии, используйте:
self.assertEqual(XXX, self.version())
где XXX - значение self.version(), которое вы ожидаете
начиная с версии 2.7: добавлена возможность использования assertRaises() в качестве менеджера контекста
Поэтому рекомендуется использовать
with self.assertRaises(SomeException) as cm:
self.version()
the_exception = cm.exception
self.assertEqual(the_exception.error_code, 3)