Подтвердить что ты не робот

Как я могу быстро отключить инструкцию try в python для тестирования?

Скажем, у меня есть следующий код:

try:
    print 'foo'
    # A lot more code...
    print 'bar'
except:
    pass

Как я в целях тестирования отключить временную инструкцию try-statement?

Вы не можете просто прокомментировать строки try и except, так как отступ все равно будет отключен.

Нет ли более простого способа, чем это?

#try:
print 'foo'
# A lot more code...
print 'bar'
#except:
#    pass
4b9b3361

Ответ 1

Вы можете сделать ререйз исключение в качестве первой строки вашего блока except, который будет вести себя так же, как и без try/except.

try:
    print 'foo'
    # A lot more code...
    print 'bar'
except:
    raise # was: pass

Ответ 2

Поверните его в оператор if True с предложением except "закомментировано" ветвью else (которая никогда не будет выполнена):

if True: # try:
    # try suite statements
else: # except:
    # except suite statements

else: не является обязательным, вы также можете просто прокомментировать весь пакет except:, но с помощью else: вы можете оставить весь набор except: с отступом и раскомментированным.

Итак:

try:
    print 'foo'
    # A lot more code...
    print 'bar'
except SomeException as se:
    print 'Uhoh, got SomeException:', se.args[0]

становится:

if True: # try:
    print 'foo'
    # A lot more code...
    print 'bar'
else: # except SomeException as se:
    print 'Uhoh, got SomeException:', se.args[0]

Ответ 3

Piggy - отключение ответа velotron, мне нравится идея сделать что-то вроде этого:

try:
    print 'foo'
    # A lot more code...
    print 'bar'
except:
    if settings.DEBUG:  # Use some boolean to represent dev state, such as DEBUG in Django
        raise           # Raise the error
    # Otherwise, handle and move on. 
    # Typically I want to log it rather than just pass.
    logger.exception("Something went wrong")

Ответ 4

Сделайте ваш except только поймать что-то, что блок try не будет бросать:

class FakeError:
    pass

try:
    # code
except FakeError: # OldError:
    # catch

Не уверен, что это хорошая идея, но она работает!