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