mirror of
https://github.com/python/cpython.git
synced 2025-08-15 14:20:55 +00:00
[3.12] gh-123934: Fix MagicMock
not to reset magic method return values (GH-124038) (#124232)
gh-123934: Fix `MagicMock` not to reset magic method return values (GH-124038)
(cherry picked from commit 7628f67d55
)
Co-authored-by: sobolevn <mail@sobolevn.me>
This commit is contained in:
parent
a82a2f1597
commit
e9578f6424
3 changed files with 53 additions and 1 deletions
|
@ -598,7 +598,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 = []
|
||||
|
@ -2189,6 +2189,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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue