if __name__ == '__main__' not working ipython
Question: I'm having trouble getting the `if __name == '__main__'` trick to work in an
IPython, Spyder environment. I've tried every approach given in this thread:
[if __name__ == '__main__' in
IPython](http://stackoverflow.com/questions/22923002/if-name-main-in-ipython)

Here are my super simplified modules

Module1.py

    
    
    Class UnitTest():
        print 'Mod1 UnitTest!'
    
    if __name__ == '__main__':
        UnitTest()
    

Module2.py

    
    
    import Module1
    
    Class UnitTest():
        print 'Mod2 UnitTest!'
    
    if __name__ == '__main__':
        UnitTest()
    

So I run Module2.py and I always am seeing both `Mod2 UnitTest` and `Mod1
UnitTest` printed. These are executing in an IPython kernel. I want only the
`Mod2 UnitTest` message to display.

Any idea what's up?


Answer: Well I deleted this question earlier out of embarrassment but might as well
share in case any other newb sees this.

I forgot to put the UnitTest line inside of the `__init__` method. So the unit
test was being run every single time when the class was defined and not when
the object was instantiated. The code should be:

Module1.py

    
    
    Class UnitTest():
        def __init__(self):
            print 'Mod1 UnitTest!'
    
    if __name__ == '__main__':
        UnitTest()
    

Module2.py

    
    
    import Module1
    
    Class UnitTest():
        def __init__(self):
            print 'Mod1 UnitTest!'
    
    if __name__ == '__main__':
        print 'Mod2 UnitTest!'
    

