Тестирование ошибки присваивания с помощью unittest

Один из моих атрибутов — это свойство, где установщик вызывает функцию проверки, которая вызывает исключение, если новое значение недопустимо :

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

12
задан Lenna 17 August 2012 в 16:27
поделиться