Pyunit запускает все тесты даже в случае сбоя утверждения

У меня есть простой тест, например:

class TestAPIWrapper(unittest.TestCase):
    def test_one(self):
        assert 1==1, "Failed 1"
        assert 2==1, "Failed 2"
        assert 2==2, "Failed 3"

способ, которым я выполняю эти тесты, следующий:

python -m unittest my_test_file

Что я получил, так это то, что, поскольку второе утверждение терпит неудачу, тест останавливается, и мне нужно запустить тесты до конца и получить ошибки утверждений по мере их появления.

Идея заключается в том, что я буду запускать этот тест каждые 6 часов на моем сервере с помощью crontab, и я намерен отправить электронное письмо со всеми случаями ошибок, обнаруженными тестом.

Ваше здоровье !


person PepperoniPizza    schedule 15.05.2013    source источник


Ответы (2)


Ну, вы не можете провалить один тест более одного раза. Идея «утвердить» заключается в том, что она прерывает функцию, если она терпит неудачу. Вам придется разделить ваши три утверждения выше на три отдельных метода test() (т. е. test_one(), test_two() и т. д.), если вы хотите поразить их все. Кроме того, вы должны использовать self.assertEqual(), а не простое утверждение.

person Markku K.    schedule 15.05.2013

Альтернативой (вероятно предпочтительному) способу разделения вашего теста на несколько функций с одним утверждением каждая является что-то вроде:

def test_one(self):
    failed = []
    if 1 != 1:
        failed.append("Failed 1")
    if 2 != 2:
        failed.append("Failed 2")
    # ...
    assert not failed, failed
person Wesley Baugh    schedule 15.05.2013