I am trying to test a method in an already existing class. Within
method in the
class the method
is called.
reads from stdin and then calls
is also in the
class
I was hoping to be able to use
on a mock
to check that
is doing the right thing and calling
Trouble is I cannot get the syntax right for the mock of
within
I used an example straight out of the mock docs but get the error shown below
As you can see I am also mocking stdin to be able to present test data on it
My question is, what code do I use to carry out this sort of test and not get the error shown?
The test run output....
Code:
inputStreamThread
Code:
Foo.crawler.crawlerapp.CrawlerApp
Code:
addUrl
Code:
inputStreamThread
Code:
addUrl
Code:
addUrl
Code:
CrawlerApp
I was hoping to be able to use
Code:
assert_called_with
Code:
addUrl
Code:
inputStreamThread
Code:
addUrl
Trouble is I cannot get the syntax right for the mock of
Code:
addUrl
Code:
CrawlerApp
I used an example straight out of the mock docs but get the error shown below
As you can see I am also mocking stdin to be able to present test data on it
My question is, what code do I use to carry out this sort of test and not get the error shown?
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)
The test run output....
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 <module>
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.