unittest & setup

View: New views
3 Messages — Rating Filter:   Alert me  

unittest & setup

by Jonathan Haddad-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Maybe I'm doing something wrong here, definitely not the most experienced unit tester. 

I've got a class, in the constructor it loads a CSV file from disc.  I'd like only 1 instance of the class to be instantiated.  However, when running multiple unit tests, multiple instances of the class are created.  What's the best way for me to avoid this?  It takes about a few seconds to load the CSV file.
--
Jonathan Haddad
http://www.rustyrazorblade.com


--
http://mail.python.org/mailman/listinfo/python-list

Re: unittest & setup

by Gabriel Genellina-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

En Wed, 04 Nov 2009 01:02:24 -0300, Jonathan Haddad <jon@...>  
escribió:

> I've got a class, in the constructor it loads a CSV file from disc.  I'd
> like only 1 instance of the class to be instantiated.  However, when  
> running
> multiple unit tests, multiple instances of the class are created.  What's
> the best way for me to avoid this?  It takes about a few seconds to load  
> the
> CSV file.

Use a factory function:

_instance = None
def createFoo(parameters):
   if _instance is None:
     _instance = Foo(parameters)
   return _instance

and replace all occurrences of Foo(parameters) with createFoo(parameters).  
For new-style classes, you may override the __new__ method instead.

Perhaps I didn't understand your problem correctly because this is  
unrelated to unit testing...

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Re: unittest & setup

by Joe Riopel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, Nov 3, 2009 at 11:02 PM, Jonathan Haddad <jon@...> wrote:
> I've got a class, in the constructor it loads a CSV file from disc.  I'd
> like only 1 instance of the class to be instantiated.  However, when running
> multiple unit tests, multiple instances of the class are created.  What's
> the best way for me to avoid this?  It takes about a few seconds to load the
> CSV file.

This post that might be worth reading, as it relates to testing with
singletons.

http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/

As is this

http://misko.hevery.com/code-reviewers-guide/
--
http://mail.python.org/mailman/listinfo/python-list