Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Python - тест, который проходит успешно, если исключение не возникает

Автор вопроса: AnonymousОтветов: 3

Я знаю о unittest модуле Python.

Я знаю о методе assertRaises() класса TestCase.

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

Любые подсказки, пожалуйста?

  • возможный дубликат Python unittest - напротив assertRaises? brandizzi 14.07.2015
  • @brandizzi - проверьте дату этого повторяющегося вопроса;) MasterJoe 06.10.2016

pythonexceptionunit-testingexception-handling

Ответы

Ответ 1 · рейтинг 14 · Community

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

doStuff()
self.assert_(True)

Это должно работать нормально. Вы можете опустить вызов self.assert_, так как он ничего не делает. Мне нравится помещать его туда, чтобы задокументировать, что я не забыл утверждение.

Ответ 2 · рейтинг 24 · Hank Gay

def runTest(self):
    try:
        doStuff()
    except:
        self.fail("Encountered an unexpected exception.")

ОБНОВЛЕНИЕ: Как упоминает liw.fi, результат по умолчанию - успех, поэтому приведенный выше пример является чем-то вроде антипаттерна. Вероятно, вам следует использовать его, только если вы хотите сделать что-то особенное, прежде чем потерпеть неудачу. Вы также должны поймать наиболее конкретные возможные исключения.

Ответ 3 · рейтинг 5 · kosii

Я использую этот шаблон для утверждения, которое вы просили:

with self.assertRaises(Exception):
    try:
        doStuff()
    except:
        pass
    else:
        raise Exception

Он потерпит неудачу именно тогда, когда исключение будет вызвано doStuff().

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы