title: Why python mock patch doesn't work?
body: <p>I have two files</p>
  
  <p>spike.py</p>
  
  <pre><code>class T1(object):
      def foo(self, afd):
          return "foo"
  
      def get_foo(self):
          return self.foo(1)
  
  
  def bar():
      return "bar"
  </code></pre>
  
  <p>test_spike.py:</p>
  
  <pre><code>from unittest import TestCase
  import unittest
  from mock import patch, MagicMock
  from spike import T1, bar
  
  
  class TestStuff(TestCase):
      @patch('spike.T1.foo', MagicMock(return_value='patched'))
      def test_foo(self):
          foo = T1().get_foo()
          self.assertEqual('patched', foo)
  
      @patch('spike.bar')
      def test_bar(self, mock_obj):
          mock_obj.return_value = 'patched'
          bar = bar()
          self.assertEqual('patched', bar)
  
  
  if __name__ == "__main__":
      unittest.main()
  </code></pre>
  
  <p>When I run <code>python test_spike.py</code>, the first test case would pass, but the second would fail.
  and I switch to use <code>nosetests test_spike.py</code>, then both two are failed.</p>
  
  <p>I don't understand how this happened? These cases supposed to pass all.</p>