Неудачный тестовый случай, если исключение возникает и обрабатывается в Python? - PullRequest
0 голосов
/ 26 сентября 2018

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

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 of Python, и сейчас я запускаю его, чтобы проверить соединениебаза данных подключена или нет.

Если да, то ей будет передано «Номер версии базы данных».

Если нет, то будет выдано исключение, которое я обработал.

После выполнения этого остального варианта тестовый пример показывает проход в любой используемой мной инфраструктуре тестирования (Robot, unittest, pytest).

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

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

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

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

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

Так что рекомендуемое использование будет

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

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

см.документ

0 голосов
/ 26 сентября 2018

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

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

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

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

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

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

...