Один из моих атрибутов - это свойство, когда сеттер вызывает функцию проверки, которая вызывает исключение, если новое значение недействительно:
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