[TIP] cleanUp for unittest

Michael Foord fuzzyman at voidspace.org.uk
Fri Apr 3 10:56:46 PDT 2009


Victoria G. Laidler wrote:
> Kumar's example code:
>> def setUp(self):
>>    self.db = ScratchDb()
>>    self.db.setup()
>>    self.cleanUp.append(lambda: self.db.teardown())
>>
>>    self.tmp = TempIO()
>>    self.cleanUp.append(lambda: self.tmp.destroy())
>>
>>   
> This looks clean to me except for the lambda, which I don't understand 
> - help?

There is no need for the lambdas in the above example.

> and I'm dithering on whether I think it ought to be a list, as 
> proposed, or something else.
>
> My usual case for cleanup behavior is file deletion, with different 
> files to be deleted depending on how far I got. Would this work?
>
> self.cleanUp.append(os.unlink(somefile))

You do need a lambda (or function) to do this however. :-)

self.cleanUp.append(lambda: os.unlink(somefile))

The benefit of cleanUp as a list is precisely that you can just push 
clean up tasks like this onto the queue without having to track how far 
your test got - or wrap each resource allocation in a try finally.

Michael

>
> Vicki


-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog





More information about the testing-in-python mailing list