Как я могу получить юнит-тест Python, чтобы не перехватывать исключения?

Я работаю над проектом Django, но я думаю, что это чистый Python unittest вопрос.

Обычно, когда вы запускаете тесты, исключительные ситуации будут перехватываться тестовым исполнителем и обрабатываться соответствующим образом.

В целях отладки я хочу отключить это поведение, т. Е. Чтобы:

python -i manage.py test

как обычно, взломает интерактивную оболочку Python.

Как это сделать?

РЕДАКТИРОВАТЬ: основываясь на ответах до сих пор, кажется, что это больше специфический для Django вопрос, чем я понял!

3 ответа

Решение

Вы можете использовать тест -джанго-нос, он работает с unittest тесты, и запускайте свои тесты как python manage.py test -v2 --pdb, И нос побежит за тобой.

Новое приложение django-pdb делает это лучше, поддерживая режим для взлома тестовых сбоев или необработанных исключений в обычном коде.

Вы можете попробовать что-то подобное в модуле вашего пакета, а затем использовать CondCatches(ваши исключения,) в вашем коде:

# System Imports
import os

class NoSuchException(Exception):
    """ Null Exception will not match any exception."""
    pass

def CondCatches(conditional, *args):
    """
    Depending on conditional either returns the arguments or NoSuchException.

    Use this to check have a caught exception that is suppressed some of the
    time. e.g.:
    from DisableableExcept import CondCatches
    import os
    try:
        # Something like:
        print "Do something bad!"
        print 23/0
    except CondCatches(os.getenv('DEBUG'), Exception), e:
        #handle the exception in non DEBUG
        print 'Somthing has a problem!', e
    """
    if conditional:
        return (NoSuchException, )
    else:
        return args

if __name__ == '__main__':
    # Do SOMETHING if file is called on it's own.
    try:
        print 'To Suppress Catching this exception set DEBUG=anything'
        print 1 / 0
    except CondCatches(os.getenv('DEBUG'), ValueError, ZeroDivisionError), e:
        print "Caught Exception", e
Другие вопросы по тегам