8000 [3.13] gh-124234: Improve docs for `Mock.reset_mock` (GH-124237) (#13… · python/cpython@8db3eee · GitHub
[go: up one dir, main page]

Skip to content

Commit 8db3eee

Browse files
[3.13] gh-124234: Improve docs for Mock.reset_mock (GH-124237) (#130408)
Co-authored-by: sobolevn <mail@sobolevn.me>
1 parent cb8d89d commit 8db3eee

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

Doc/library/unittest.mock.rst

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,8 @@ the *new_callable* argument to :func:`patch`.
401401

402402
The reset_mock method resets all the call attributes on a mock object:
403403

404+
.. doctest::
405+
404406
>>> mock = Mock(return_value=None)
405407
>>> mock('hello')
406408
>>> mock.called
@@ -409,20 +411,41 @@ the *new_callable* argument to :func:`patch`.
409411
>>> mock.called
410412
False
411413

412-
.. versionchanged:: 3.6
413-
Added two keyword-only arguments to the reset_mock function.
414-
415414
This can be useful where you want to make a series of assertions that
416-
reuse the same object. Note that :meth:`reset_mock` *doesn't* clear the
415+
reuse the same object.
416+
417+
*return_value* parameter when set to ``True`` resets :attr:`return_value`:
418+
419+
.. doctest::
420+
421+
>>> mock = Mock(return_value=5)
422+
>>> mock('hello')
423+
5
424+
>>> mock.reset_mock(return_value=True)
425+
>>> mock('hello') # doctest: +ELLIPSIS
426+
<Mock name='mock()' id='...'>
427+
428+
*side_effect* parameter when set to ``True`` resets :attr:`side_effect`:
429+
430+
.. doctest::
431+
432+
>>> mock = Mock(side_effect=ValueError)
433+
>>> mock('hello')
434+
Traceback (most recent call last):
435+
...
436+
ValueError
437+
>>> mock.reset_mock(side_effect=True)
438+
>>> mock('hello') # doctest: +ELLIPSIS
439+
<Mock name='mock()' id='...'>
440+
441+
Note that :meth:`reset_mock` *doesn't* clear the
417442
:attr:`return_value`, :attr:`side_effect` or any child attributes you have
418-
set using normal assignment by default. In case you want to reset
419-
:attr:`return_value` or :attr:`side_effect`, then pass the corresponding
420-
parameter as ``True``. Child mocks and the return value mock
421-
(if any) are reset as well.
443+
set using normal assignment by default.
422444

423-
.. note:: *return_value*, and *side_effect* are keyword-only
424-
arguments.
445+
Child mocks are reset as well.
425446

447+
.. versionchanged:: 3.6
448+
Added two keyword-only arguments to the reset_mock function.
426449

427450
.. method:: mock_add_spec(spec, spec_set=False)
428451

Lib/unittest/mock.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,9 @@ def __set_side_effect(self, value):
628628
side_effect = property(__get_side_effect, __set_side_effect)
629629

630630

631-
def reset_mock(self, visited=None, *, return_value=False, side_effect=False):
631+
def reset_mock(self, visited=None, *,
632+
return_value: bool = False,
633+
side_effect: bool = False):
632634
"Restore the mock object to its initial state."
633635
if visited is None:
634636
visited = []
@@ -2228,7 +2230,7 @@ def mock_add_spec(self, spec, spec_set=False):
22282230
self._mock_add_spec(spec, spec_set)
22292231
self._mock_set_magics()
22302232

2231-
def reset_mock(self, /, *args, return_value=False, **kwargs):
2233+
def reset_mock(self, /, *args, return_value: bool = False, **kwargs):
22322234
if (
22332235
return_value
22342236
and self._mock_name

0 commit comments

Comments
 (0)
0