Unittest - testing properties (read-only attributes)
Diez B. Roggisch
deetsNOSPAM at web.de
Mon Feb 21 12:09:32 EST 2005
Paul Moore wrote:
> I have a class with a read-only attribute, and I want to add a unit
> test to ensure that it really *is* read-only. I can do this as
>
> def test_readonly(self):
> """Value and multiplier must be readonly"""
> try:
> self.combat.value = 1
> self.fail("Value is not read only")
> except AttributeError:
> pass
>
> That works, but it seems a bit clumsy. Is there a better way?
By using setattr, you could refactor the above code into a function. Looks
like this (untested):
def test_readonly(self, instance, attribute, value=1):
"""Value and multiplier must be readonly"""
try:
setattr(instance, attribute, value)
self.fail("Value is not read only")
except AttributeError:
pass
Then the testing becomes one line:
self.test_readonly(self.combat, "value")
--
Regards,
Diez B. Roggisch
More information about the Python-list
mailing list