Выявление исключения запуска для метода в Python - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь написать модульный тест для кода, в котором есть метод, который вызывается при возникновении исключения.Теперь этот метод вызывается несколькими исключениями.Моя главная цель - записать модульный тест, для которого я могу утверждать, является ли указанное исключение триггером для этого метода.

Например: (деление общего метода)

try:
    divide(2,0)
except ZeroDivisionError:
    method_to_be_called()

Теперь в моем тестовом примере я хочу проверить, является ли исключение триггера для method_to_be_called () ZeroDivisionError. Есть идеи, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Может быть sys.exc_info () будет полезно?

0 голосов
/ 30 марта 2012

Похоже, вы (или должны) пытаться проверить, будет ли ваш метод вызываться при каждом возникновении исключения.В этом случае ваш подход ошибочен: ваш модульный тест не должен спрашивать, какое исключение произошло.Это должно быть повышение каждого интересующего вас исключения и проверка, был ли вызван метод.(Итак, не используйте assertRaises: это не вызывает исключения, оно ожидает, что его аргумент сделает это).

Как это проверить?НЕ пытаясь заглянуть внутрь метода.Если целью вашего метода является выполнение чего-то вроде записи в журнал при возникновении исключения, вызовите исключение и проверьте, правильно ли была сделана запись в журнале.

Если действия вашего метода («побочные эффекты»)) трудно обнаружить в тесте, вы должны заменить его методом «фиктивного»: это метод, который заменяет собой реальную вещь, но его задача состоит в том, чтобы помочь инфраструктуре тестирования обеспечить правильность его вызова.Посмотрите это в вашей тестовой среде.

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