Неудачный тестовый пример, если исключение возникает и обрабатывается в Python?

1

Взгляните на следующий тестовый пример:

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), которую я использовал.

Но я хочу, чтобы этот тестовый пример потерпел неудачу, потому что это не тот результат, который я ищу.

Обработка исключений, потому что я хочу видеть только сообщение об ошибке, а не все эти красные строки исключения.

Я открыт для любого предложения, будь то удаление исключений.

Теги:
unit-testing
automated-tests
python-unittest

2 ответа

0
Лучший ответ

Поведение прохождения теста является ожидаемым. Тесты заканчиваются неудачно, если вы получаете результат, который не ожидался в каком-либо утверждении.

В вашем случае, если вы хотите, чтобы исключение было брошено, вы должны использовать:

self.assertRaises(cx_Oracle.DatabaseError, self.version())

Если вы хотите проверить правильность версии, используйте:

self.assertEqual(XXX, self.version())

где XXX - значение self.version(), которое вы ожидаете

  • 0
    Я получаю значение с помощью метода, может ли оно быть обработано в assertEqual.
  • 0
    конечно! Представьте, что у вас есть метод foo (), который возвращает 1. Выполнив self.assertEqual (1, foo ()), вы пройдете тест. Если вы ожидаете получить «2», self.assertEqual (2, foo ()) завершится ошибкой
Показать ещё 1 комментарий
0

начиная с версии 2.7: добавлена возможность использования assertRaises() в качестве менеджера контекста

Поэтому рекомендуется использовать

with self.assertRaises(SomeException) as cm:
    self.version()

the_exception = cm.exception
self.assertEqual(the_exception.error_code, 3)

см. документ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню