我的属性之一是设置器调用验证函数的属性,如果新值无效,该函数会引发异常:
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 中有一些新特性