Я знаю о unittest
модуле Python.
Я знаю о методе assertRaises()
класса TestCase
.
Я хотел бы написать тест, который завершается успешно, когда возникает исключение не.
Любые подсказки, пожалуйста?
Я знаю о unittest
модуле Python.
Я знаю о методе assertRaises()
класса TestCase
.
Я хотел бы написать тест, который завершается успешно, когда возникает исключение не.
Любые подсказки, пожалуйста?
Средство выполнения тестов перехватит все исключения, которые, как вы не утверждали, будут вызваны. Таким образом:
doStuff()
self.assert_(True)
Это должно работать нормально. Вы можете опустить вызов self.assert_, так как он ничего не делает. Мне нравится помещать его туда, чтобы задокументировать, что я не забыл утверждение.
def runTest(self):
try:
doStuff()
except:
self.fail("Encountered an unexpected exception.")
ОБНОВЛЕНИЕ: Как упоминает liw.fi, результат по умолчанию — успех, поэтому приведенный выше пример является чем-то вроде антипаттерна. Вероятно, вам следует использовать его, только если вы хотите сделать что-то особенное, прежде чем потерпеть неудачу. Вы также должны поймать наиболее конкретные возможные исключения.
Я использую этот шаблон для утверждения, которое вы просили:
with self.assertRaises(Exception):
try:
doStuff()
except:
pass
else:
raise Exception
Он потерпит неудачу именно тогда, когда исключение будет вызвано doStuff().