Kaydet (Commit) 75963643 authored tarafından Michael Foord's avatar Michael Foord

Fix exception when calling reset_mock on a mock created with autospec

üst afc0c77b
......@@ -510,6 +510,8 @@ class NonCallableMock(Base):
self.method_calls = _CallList()
for child in self._mock_children.values():
if isinstance(child, _SpecState):
continue
child.reset_mock()
ret = self._mock_return_value
......@@ -664,6 +666,7 @@ class NonCallableMock(Base):
# but not method calls
_check_and_set_parent(self, value, None, name)
setattr(type(self), name, value)
self._mock_children[name] = value
elif name == '__class__':
self._spec_class = value
return
......
......@@ -355,6 +355,13 @@ class SpecSignatureTest(unittest.TestCase):
self.assertEqual(mock(), 'foo')
def test_autospec_reset_mock(self):
m = create_autospec(int)
int(m)
m.reset_mock()
self.assertEqual(m.__int__.call_count, 0)
def test_mocking_unbound_methods(self):
class Foo(object):
def foo(self, foo):
......
......@@ -345,6 +345,14 @@ class TestMockingMagicMethods(unittest.TestCase):
self.assertEqual(mock[1][2][3], 3)
def test_magic_method_reset_mock(self):
mock = MagicMock()
str(mock)
self.assertTrue(mock.__str__.called)
mock.reset_mock()
self.assertFalse(mock.__str__.called)
def test_dir(self):
# overriding the default implementation
for mock in Mock(), MagicMock():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment