Один из моих атрибутов — это свойство, где установщик вызывает функцию проверки, которая вызывает исключение, если новое значение недопустимо :
pos.offset = 0
# @offset.setter calls validate(offset=0)
# PositionError: Offset may not be 0.
. Я пытаюсь добавить тест, чтобы убедиться, что это не удается. Однако я не могу понять, как заставить assertRaises работать с заданием.
Обычный синтаксис assertRaises требует метода, а не атрибута/свойства :
self.assertRaises(PositionError, pos.offset, 0)
# TypeError: 'int' object is not callable
. Другие формы, которые я пробовал, недействительны для Python :
self.assertRaises(PositionError, pos.offset = 0)
# SyntaxError: Keyword can't be an expression
self.assertRaises(PositionError, lambda: pos.offset = 0)
# SyntaxError: lambda cannot contain assignment
. Как проверить неудачное присвоение свойства?
Примечание :Python 2.6, я знаю, что в unittest есть некоторые новые функции в версии 2.7