Python - тест, который успешно выполняется, когда исключение не вызвано - PullRequest
15 голосов
/ 15 марта 2009

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

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

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

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

Ответы [ 3 ]

24 голосов
/ 15 марта 2009
def runTest(self):
    try:
        doStuff()
    except:
        self.fail("Encountered an unexpected exception.")

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

14 голосов
/ 15 марта 2009

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

doStuff()
self.assert_(True)

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

6 голосов
/ 17 января 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...