Skip to content

Instantly share code, notes, and snippets.

@dcramer
Created February 6, 2012 22:38
Show Gist options
  • Save dcramer/1755549 to your computer and use it in GitHub Desktop.
Save dcramer/1755549 to your computer and use it in GitHub Desktop.
def ManagerMock(manager, return_value=None):
"""
>>> objects = ManagerMock(Post.objects, ['queryset', 'result'])
>>> assert objects.filter() == objects.all()
"""
return_value = return_value or []
class ManagerMock(mock.MagicMock):
def _get_child_mock(self, **kwargs):
name = kwargs.get('name', '')
if name[:2] == name[-2:] == '__':
return super(ManagerMock, self)._get_child_mock(**kwargs)
return self
def __getattr__(self, name):
result = super(ManagerMock, self).__getattr__(name)
if result is self:
result._mock_name = result._mock_new_name = name
return result
m = ManagerMock()
m.__iter__.side_effect = lambda *a, **k: iter(return_value)
m.__getitem__ = lambda s, n: list(s)[n]
return m
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment