[TIP] setUp and tearDown behavior

Michael Foord fuzzyman at voidspace.org.uk
Tue Jan 19 06:06:12 PST 2010

On 19/01/2010 13:53, Olemis Lang wrote:
> [snip...]
>> In case this is expected, is there a way to do it just once for all the
>> methods?
> Using standard `unittest` module ? well ... no.
Well - you can make setup *effectively* only run the first time using a 
class attribute:

class SomeTest(unittest.TestCase):
doneSetup = False
def setUp(self):
if not self.__class__.doneSetup:
self.__class__.doneSetup = True

Making tearDown only run the *last* time is a bit harder (you could hack 
it in with a counter in setUp and only execute tearDown when the counter 
== number of test methods). Builtin support for class level fixtures in 
unittest would be good, even if they are ripe for abuse (shared state 
between fixtures).

All the best,

Michael Foord


READ CAREFULLY. By accepting and reading this email you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies (”BOGUS AGREEMENTS”) that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

More information about the testing-in-python mailing list