aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/unittest
diff options
context:
space:
mode:
authorsobolevn <mail@sobolevn.me>2024-09-19 10:55:47 +0300
committerGitHub <noreply@github.com>2024-09-19 10:55:47 +0300
commit7628f67d55cb65bad9c9266e0457e468cd7e3775 (patch)
tree495c0f4a08eb765223143a4193426d4d5679571e /Lib/unittest
parent43cd7aa8cd88624f7211e47b98bc1e8e63e7660f (diff)
downloadcpython-7628f67d55cb65bad9c9266e0457e468cd7e3775.tar.gz
cpython-7628f67d55cb65bad9c9266e0457e468cd7e3775.zip
gh-123934: Fix `MagicMock` not to reset magic method return values (#124038)
Diffstat (limited to 'Lib/unittest')
-rw-r--r--Lib/unittest/mock.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py
index 1fa90277e08..bb34c743604 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -628,7 +628,7 @@ class NonCallableMock(Base):
side_effect = property(__get_side_effect, __set_side_effect)
- def reset_mock(self, visited=None,*, return_value=False, side_effect=False):
+ def reset_mock(self, visited=None, *, return_value=False, side_effect=False):
"Restore the mock object to its initial state."
if visited is None:
visited = []
@@ -2218,6 +2218,17 @@ class MagicMock(MagicMixin, Mock):
self._mock_add_spec(spec, spec_set)
self._mock_set_magics()
+ def reset_mock(self, /, *args, return_value=False, **kwargs):
+ if (
+ return_value
+ and self._mock_name
+ and _is_magic(self._mock_name)
+ ):
+ # Don't reset return values for magic methods,
+ # otherwise `m.__str__` will start
+ # to return `MagicMock` instances, instead of `str` instances.
+ return_value = False
+ super().reset_mock(*args, return_value=return_value, **kwargs)
class MagicProxy(Base):