I'm using python mocks to assert that a particular object was created with the right arguments. This is how my code looks:
class Installer:
    def __init__(foo, bar, version):
        # Init stuff
        pass
    def __enter__(self):
        return self
    def __exit__(self, type, value, tb):
        # cleanup
        pass
    def install(self):
        # Install stuff
        pass
class Deployer:
    def deploy(self):
        with Installer('foo', 'bar', 1) as installer:
            installer.install()
Now, I want to assert that installer was created with the right arguments. This is the code I have so far:
class DeployerTest(unittest.TestCase):
    @patch('Installer', autospec=True)
    def testInstaller(self, mock_installer):
        deployer = Deployer()
        deployer.deploy()
        # Can't do this :-(
        mock_installer.__init__.assert_called_once_with('foo', 'bar', 1)
This is the error I get:
  File "test_deployment.py", line .., in testInstaller
    mock_installer.__init__.assert_called_once_with('foo', 'bar', 1)
AttributeError: 'function' object has no attribute 'assert_called_once_with'
Here is the fixed code (Call it test.py). Thanks, all!
import unittest
from mock import patch
class Installer:
    def __init__(self, foo, bar, version):
        # Init stuff
        pass
    def __enter__(self):
        return self
    def __exit__(self, type, value, tb):
        # cleanup
        pass
    def install(self):
        # Install stuff
        pass
class Deployer:
    def deploy(self):
        with Installer('foo', 'bar', 1) as installer:
            installer.install()
class DeployerTest(unittest.TestCase):
    @patch('tests.test.Installer', autospec=True)
    def testInstaller(self, mock_installer):
        deployer = Deployer()
        deployer.deploy()
        # Can't do this :-(
        # mock_installer.__init__.assert_called_once_with('foo', 'bar', 1)
        # Try this instead
        mock_installer.assert_called_once_with('foo', 'bar', 1)
 
     
    