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().