unit testing properties
bernie at 3captus.com
Fri Jan 18 11:29:30 CET 2002
Since Foo.bar is not a callable. I think you should use assert,
self.assert_(), self.failIf(), self.failIf(), self.failUnless() ...
(there are more self.assertXXX() and self.failXXX(), see doc)
to do the assertion test.
Mark McEahern wrote:
> I'm trying to unit test the setter for a property:
> class Foo(object):
> def getBar(self):
> return "bar"
> bar = property(getBar, None, None, "Bar.")
> Notice that there is no setter (second arg to property is None). This code
> should raise AttributeError:
> f = Foo()
> f.bar = "somethin' innarestin"
> However, suppose I wanted to unit test this:
> import unittest
> class testFoo(unittest.TestCase):
> def testSetter(self):
> f = Foo()
> self.assertRaises(AttributeError, f.bar...
> That's where I get stopped. The second param to assertRaises is supposed to
> be a callable object--but I want to test a setter. Hmm, any ideas? Here
> are mine:
> 1. Why am I testing property(whatever, None)--that's like testing whether
> addition works. I'm not really doing anything beyond what Python's supposed
> to do, so why do I think I need to test Python and not my specific stuff.
> 2. If I'm perverse enough to want to test this, wrap the call to f.bar =
> "whatever" in a function and pass THAT to assertRaises--fer instance, I
> suppose I could use a lambda.
> // mark
More information about the Python-list