Skip to content

Commit aef7dc8

Browse files
vegarsticjw296
authored andcommitted
bpo-38932: Mock fully resets child objects on reset_mock(). (GH-17409)
1 parent 9bfb4a7 commit aef7dc8

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

Lib/unittest/mock.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,7 @@ def reset_mock(self, visited=None,*, return_value=False, side_effect=False):
592592
for child in self._mock_children.values():
593593
if isinstance(child, _SpecState) or child is _deleted:
594594
continue
595-
child.reset_mock(visited)
595+
child.reset_mock(visited, return_value=return_value, side_effect=side_effect)
596596

597597
ret = self._mock_return_value
598598
if _is_instance_mock(ret) and ret is not self:

Lib/unittest/test/testmock/testmock.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1636,11 +1636,23 @@ def test_reset_return(self):
16361636
self.assertNotEqual(m.side_effect, None)
16371637

16381638
def test_reset_sideeffect(self):
1639-
m = Mock(return_value=10, side_effect=[2,3])
1639+
m = Mock(return_value=10, side_effect=[2, 3])
16401640
m.reset_mock(side_effect=True)
16411641
self.assertEqual(m.return_value, 10)
16421642
self.assertEqual(m.side_effect, None)
16431643

1644+
def test_reset_return_with_children(self):
1645+
m = MagicMock(f=MagicMock(return_value=1))
1646+
self.assertEqual(m.f(), 1)
1647+
m.reset_mock(return_value=True)
1648+
self.assertNotEqual(m.f(), 1)
1649+
1650+
def test_reset_return_with_children_side_effect(self):
1651+
m = MagicMock(f=MagicMock(side_effect=[2, 3]))
1652+
self.assertNotEqual(m.f.side_effect, None)
1653+
m.reset_mock(side_effect=True)
1654+
self.assertEqual(m.f.side_effect, None)
1655+
16441656
def test_mock_add_spec(self):
16451657
class _One(object):
16461658
one = 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Mock fully resets child objects on reset_mock(). Patch by Vegard Stikbakke

0 commit comments

Comments
 (0)