title: Trying to mock method in Object gives 'AttributeError'
body: <p>I am trying to test a method in an already existing class.  Within <code>inputStreamThread</code> method in the <code>Foo.crawler.crawlerapp.CrawlerApp</code> class the method <code>addUrl</code> is called.</p>
  
  <p><code>inputStreamThread</code> reads from stdin and then calls <code>addUrl</code> </p>
  
  <p><code>addUrl</code> is also in the <code>CrawlerApp</code> class</p>
  
  <p>I was hoping to be able to use <code>assert_called_with</code> on a mock <code>addUrl</code> to check that <code>inputStreamThread</code> is doing the right thing and calling <code>addUrl</code></p>
  
  <p>Trouble is I cannot get the syntax right for the mock of <code>addUrl</code> within <code>CrawlerApp</code></p>
  
  <p>I used an example straight out of the mock docs but get the error shown below</p>
  
  <p>As you can see I am also mocking stdin to be able to present test data on it</p>
  
  <p>My question is, what code do I use to carry out this sort of test and not get the error shown?</p>
  
  <pre><code>import Foo.crawler.crawlerapp
  from unittest import TestCase
  from mock import patch, Mock
  from mephistopheles.messageformat import EventDataFrame
  from mephistopheles.messageformat.types import adservers as pbufs
  import time
  import sys
  
  
  class testDeserial(TestCase):
  
      def generate_dummy_auction_event(self,url):
          adunitinfo = pbufs.AdUnitInfo(index_on_page=0, url=url)
          geoloc = pbufs.GeoLocation(country="DE", region="low")
          userinfo = pbufs.UserInfo(user_hash=1,
                                    ip_octets=1,
                                    geolocation=geoloc,
                                    language="en")
          auctioninfo = pbufs.AuctionInfo(timestamp=int(time.time()),
                                          user=userinfo,
                                          ad_unit=adunitinfo)
          return auctioninfo
  
      def setUp(self):
          pass
  
      @patch.object(Foo.crawler.crawlerapp.CrawlerApp,'addUrl')
      def test_check_url(self, MaddUrl):
          url_a = "http://audaxing.wordpress.com"
          dummy_event = self.generate_dummy_auction_event(url_a)
          with patch("sys.stdin") as mock_stdin:
              mock_stdin.read.return_value = dummy_event
              ca._running = True
              input_thread = threading.Thread(target=self.inputStreamThread)
              input_thread.start()
              time.sleep(0.5)
              ca._running = False
          MaddUrl.assert_called_with(url_a)
  </code></pre>
  
  <p>The test run output....</p>
  
  <pre><code>$ bin/tests --tests-pattern=test_deserialize
  Test-module import failures:
  
  Module: Foo.crawler.tests.test_deserialize
  
  Traceback (most recent call last):
    File "/home/jamie/svn/Foo/crawler.buildout/trunk/src/Foo.crawler/Foo/crawler/tests/test_deserialize.py", line 11, in &lt;module&gt;
      class testDeserial(TestCase):
    File "/home/jamie/svn/Foo/crawler.buildout/trunk/src/Foo.crawler/Foo/crawler/tests/test_deserialize.py", line 28, in testDeserial
      @patch.object(Foo.crawler.crawlerapp.CrawlerApp,'addUrl')
  AttributeError: 'function' object has no attribute 'object'
  
  
  
  Test-modules with import problems:
    Foo.crawler.tests.test_deserialize
  Total: 0 tests, 0 failures, 0 errors in 0.000 seconds.
  </code></pre>