[Tutor] testing new style class properties using pyUnit ? (original) (raw)

Duncan Gibson duncan at thermal.esa.int
Thu Jul 1 12:08:31 EDT 2004


In my original question, I wrote:

I had a class which used get and set methods to access a class variable. I set up some unit tests using pyUnit.

I've just upgraded the source to use the new style classes with properties instead of explicit get and set methods. However, so far I've been unable to convert the unit tests. I note the error message, but I don't understand why. Can anyone explain the magical incantation that I need to test the property setter?

Well, many thanks to Danny Yoo for pointing me in the right direction, explaining the name mangling that gives rise to _className__thingName See his reply for details.

However, I also included the oh-so-glib statement:

In fact it's worse than this because my real code uses class variables and classmethods, and I want to test the derived classes, but the principle is the same.

Boy, oh, boy. The naming principle is certainly the same, but after spending most of the day failing to convert the pyUnit tests to give the results I expected when using the mangled names, it finally hit me.

The new Python features involving slots and __var = property(...) apply to instance attributes. Let me say that again: instance attributes.

On first sight they appeared to work with my class variables, and had it not been for pyUnit I would have thought they were working perfectly, and six months down the line there would have been a lot of tearing of hair and gnashing of teeth.

Cheers Duncan



More information about the Tutor mailing list