class AppError(Exception): pass
class MissingInputError(AppError):
em = {1101: "Date input is missing. Please verify.", \
1102: "Key input is missing. Please verify.", \
1103: "Stn input is missing. Please verify."}
# and so on ...
...
def validate(self):
""" Method of Input class to validate input and save it """
params = self.__params
if 'dt' in params:
self.__validateKey(escape(params['dt'][0]))
else:
raise MissingInputError(1101)
if 'key' in params:
self.__validateService(escape(params['key'][0]))
else:
raise MissingInputError(1102)
# and so on ...
Модульное тестирование выше, я знаю, что следующие тесты в классе тестирования MissingInput:
def testMissingKeyInput(self):
""" Missing key should raise error """
ip = controller.Input(MissingInput.missInputKey)
self.assertRaises(errors.MissingInputError, ip.validate)
def testMissingDtInput(self):
""" Missing dt should raise error """
ip = controller.Input(MissingInput.missInputDt)
self.assertRaises(errors.MissingInputError, ip.validate)
# and so on ...
будет правильно определять, если MissingInputErrorисключение было поднято.
Есть ли способ определить в тесте, какой номер ошибки был передан исключению при его вызове, чтобы я мог быть уверен, что ошибка возникает для этого конкретного отсутствующего ввода, а не для любого другогопропущенные входы?
(PS: Python 2.4.3 ).
Совет : Если вы застряли с 2,4 до 2,6, использовать библиотеку unittest2 .В Python 2.7 и 3.2 появится целый ряд улучшений для unittest.unittest2 - это бэкпорт новых функций (и тестов) для работы с Python 2.4, 2.5 и 2.6.