title: How to mock a function that is defined in the same file and is not imported by the method being tested?
body: <p>I have the following code so far:</p>
  
  <pre><code>import unittest
  from mock import patch, Mock
  
  
  def method_1():
      from math import ceil
      return ceil(1.2)
  
  
  def test_1():
      m = Mock(return_value=10)
      with patch('math.ceil', m) as p:
          a = method_1()
          assert(a == 10)
  
  
  def method_2():
      return method_1() + 1
  
  
  def test_2():
      m = Mock(return_value=20)
      with patch('method_1', m) as p:
          a = method_2()
          assert(a == 21)
  </code></pre>
  
  <p>on running the tests I get the following error:</p>
  
  <pre><code>$ nosetests -s unittest.py 
  .E
  ======================================================================
  ERROR: unittest.test_2
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/nose/case.py", line 197, in runTest
      self.test(*self.arg)
    File "/srv/www/rpr/unittest.py", line 27, in test_2
      with patch('method_1', m) as p:
    File "/usr/local/lib/python2.7/dist-packages/mock.py", line 1564, in patch
      getter, attribute = _get_target(target)
    File "/usr/local/lib/python2.7/dist-packages/mock.py", line 1413, in _get_target
      (target,))
  TypeError: Need a valid target to patch. You supplied: 'method_1'
  
  ----------------------------------------------------------------------
  Ran 2 tests in 27.840s
  
  FAILED (errors=1)
  </code></pre>
  
  <p>I am able to mock <code>math.ceil</code> correctly and <code>test_1</code> passes without any issues. I am having a hard time mocking <code>method_1</code> itself. How do I do this?</p>