mock patch not work with nosetests
Question: I just tried to learn the [mock](https://pypi.python.org/pypi/mock) and
[nosetests](https://nose.readthedocs.org/en/latest/) by running simple
examples, but got no luck:

    
    
    john$ nosetests test_mylib.py
    E
    ======================================================================
    ERROR: test_mylib.test_mylib_foo
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/wjq/py-virtenv-2.7.5/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
        self.test(*self.arg)
      File "/Users/wjq/py-virtenv-2.7.5/lib/python2.7/site-packages/mock.py", line 1201, in patched
        return func(*args, **keywargs)
    TypeError: test_mylib_foo() takes exactly 2 arguments (1 given)
    

However if I run the test directly, it's ok:

    
    
    john$ python test_mylib.py
    john$ 
    

I think I must miss some key understanding on the tow libraries since I'm new
to them. Really appreciate if someone can point them out.

The followings are my example codes.

test_mylib.py

    
    
    import mock
    import mylib
    
    @mock.patch('mylib.incr')
    def test_mylib_foo(aa, incr):
        incr.return_value=5
        assert mylib.foo(1) == 6
    
    if __name__ == '__main__':
        test_mylib_foo(123)
    

mylib.py

    
    
    from depen import incr
    def foo(aa):
        return incr(aa) +1
    

depen.py

    
    
    def incr(aa):
        return aa+1
    


Answer: Remove the `aa` argument and it'll work just fine:

    
    
    @mock.patch('mylib.incr')
    def test_mylib_foo(incr):
        incr.return_value=5
        assert mylib.foo(1) == 6
    
    if __name__ == '__main__':
        test_mylib_foo()
    

A better `__main__` execution would call
[nose.runmodule](http://nose.readthedocs.org/en/latest/api/core.html#nose.core.runmodule):

    
    
    if __name__ == '__main__':
        import nose
        nose.runmodule() 
    

