Changelog
### 4.0.0
```
-----
- No Changes from 4.0.0b1.
```
### 4.0.0b1
```
-------
- The release is a fresh cut of cpython's `4a686504`__. All changes to :mod:`mock`
from that commit and before are included in this release along with the
subsequent changes listed below.
__ https://github.com/python/cpython/commit/4a686504eb2bbf69adf78077458508a7ba131667
- Issue 37972: Subscripts to the `unittest.mock.call` objects now receive
the same chaining mechanism as any other custom attributes, so that the
following usage no longer raises a `TypeError`:
call().foo().__getitem__('bar')
Patch by blhsing
- Issue 38839: Fix some unused functions in tests. Patch by Adam Johnson.
- Issue 39485: Fix a bug in :func:`unittest.mock.create_autospec` that
would complain about the wrong number of arguments for custom descriptors
defined in an extension module returning functions.
- Issue 39082: Allow AsyncMock to correctly patch static/class methods
- Issue 38093: Fixes AsyncMock so it doesn't crash when used with
AsyncContextManagers or AsyncIterators.
- Issue 38859: AsyncMock now returns StopAsyncIteration on the exaustion of
a side_effects iterable. Since PEP-479 its Impossible to raise a
StopIteration exception from a coroutine.
- Issue 38163: Child mocks will now detect their type as either synchronous
or asynchronous, asynchronous child mocks will be AsyncMocks and
synchronous child mocks will be either MagicMock or Mock (depending on
their parent type).
- Issue 38473: Use signature from inner mock for autospecced methods
attached with :func:`unittest.mock.attach_mock`. Patch by Karthikeyan
Singaravelan.
- Issue 38136: Changes AsyncMock call count and await count to be two
different counters. Now await count only counts when a coroutine has been
awaited, not when it has been called, and vice-versa. Update the
documentation around this.
- Issue 37555: Fix `NonCallableMock._call_matcher` returning tuple instead
of `_Call` object when `self._spec_signature` exists. Patch by Elizabeth
Uselton
- Issue 37251: Remove `__code__` check in AsyncMock that incorrectly
evaluated function specs as async objects but failed to evaluate classes
with `__await__` but no `__code__` attribute defined as async objects.
- Issue 38669: Raise :exc:`TypeError` when passing target as a string with
:meth:`unittest.mock.patch.object`.
- Issue 25597: Ensure, if ``wraps`` is supplied to
:class:`unittest.mock.MagicMock`, it is used to calculate return values
for the magic methods instead of using the default return values. Patch by
Karthikeyan Singaravelan.
- Issue 38108: Any synchronous magic methods on an AsyncMock now return a
MagicMock. Any asynchronous magic methods on a MagicMock now return an
AsyncMock.
- Issue 21478: Record calls to parent when autospecced object is attached
to a mock using :func:`unittest.mock.attach_mock`. Patch by Karthikeyan
Singaravelan.
- Issue 38857: AsyncMock fix for return values that are awaitable types.
This also covers side_effect iterable values that happend to be awaitable,
and wraps callables that return an awaitable type. Before these awaitables
were being awaited instead of being returned as is.
- Issue 38932: Mock fully resets child objects on reset_mock(). Patch by
Vegard Stikbakke
- Issue 37685: Fixed ``__eq__``, ``__lt__`` etc implementations in some
classes. They now return :data:`NotImplemented` for unsupported type of
the other operand. This allows the other operand to play role (for example
the equality comparison with :data:`~unittest.mock.ANY` will return
``True``).
- Issue 37212: :func:`unittest.mock.call` now preserves the order of
keyword arguments in repr output. Patch by Karthikeyan Singaravelan.
- Issue 37828: Fix default mock name in
:meth:`unittest.mock.Mock.assert_called` exceptions. Patch by Abraham
Toriz Cruz.
- Issue 36871: Improve error handling for the assert_has_calls and
assert_has_awaits methods of mocks. Fixed a bug where any errors
encountered while binding the expected calls to the mock's spec were
silently swallowed, leading to misleading error output.
- Issue 21600: Fix :func:`mock.patch.stopall` to stop active patches that
were created with :func:`mock.patch.dict`.
- Issue 38161: Removes _AwaitEvent from AsyncMock.
- Issue 36871: Ensure method signature is used instead of constructor
signature of a class while asserting mock object against method calls.
Patch by Karthikeyan Singaravelan.
```
### 3.0.5
```
-----
- Issue 31855: :func:`unittest.mock.mock_open` results now respects the
argument of read([size]). Patch contributed by Rémi Lapeyre.
```
### 3.0.4
```
-----
- Include the license, readme and changelog in the source distribution.
```
### 3.0.3
```
-----
- Fixed patching of dictionaries, when specifying the target with a
unicode on Python 2.
```
### 3.0.2
```
-----
- Add missing ``funcsigs`` dependency on Python 2.
```
### 3.0.1
```
-----
- Fix packaging issue where ``six`` was missed as a dependency.
```
### 3.0.0
```
-----
- Issue 35226: Recursively check arguments when testing for equality of
:class:`unittest.mock.call` objects and add note that tracking of
parameters used to create ancestors of mocks in ``mock_calls`` is not
possible.
- Issue 31177: Fix bug that prevented using :meth:`reset_mock
<unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes
- Issue 26704: Added test demonstrating double-patching of an instance
method. Patch by Anthony Sottile.
- Issue 35500: Write expected and actual call parameters on separate lines
in :meth:`unittest.mock.Mock.assert_called_with` assertion errors.
Contributed by Susan Su.
- Issue 35330: When a :class:`Mock` instance was used to wrap an object, if
`side_effect` is used in one of the mocks of it methods, don't call the
original implementation and return the result of using the side effect the
same way that it is done with return_value.
- Issue 30541: Add new function to seal a mock and prevent the
automatically creation of child mocks. Patch by Mario Corchero.
- Issue 35022: :class:`unittest.mock.MagicMock` now supports the
``__fspath__`` method (from :class:`os.PathLike`).
- Issue 33516: :class:`unittest.mock.MagicMock` now supports the
``__round__`` magic method.
- Issue 35512: :func:`unittest.mock.patch.dict` used as a decorator with
string target resolves the target during function call instead of during
decorator construction. Patch by Karthikeyan Singaravelan.
- Issue 36366: Calling ``stop()`` on an unstarted or stopped
:func:`unittest.mock.patch` object will now return `None` instead of
raising :exc:`RuntimeError`, making the method idempotent. Patch
byKarthikeyan Singaravelan.
- Issue 35357: Internal attributes' names of unittest.mock._Call and
unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with
_mock_ in order to prevent clashes with widely used object attributes.
Fixed minor typo in test function name.
- Issue 20239: Allow repeated assignment deletion of
:class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo.
- Issue 35082: Don't return deleted attributes when calling dir on a
:class:`unittest.mock.Mock`.
- Issue 0: Improved an error message when mock assert_has_calls fails.
- Issue 23078: Add support for :func:`classmethod` and :func:`staticmethod`
to :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa.
- Issue 21478: Calls to a child function created with
:func:`unittest.mock.create_autospec` should propagate to the parent.
Patch by Karthikeyan Singaravelan.
- Issue 36598: Fix ``isinstance`` check for Mock objects with spec when the
code is executed under tracing. Patch by Karthikeyan Singaravelan.
- Issue 32933: :func:`unittest.mock.mock_open` now supports iteration over
the file contents. Patch by Tony Flury.
- Issue 21269: Add ``args`` and ``kwargs`` properties to mock call objects.
Contributed by Kumar Akshay.
- Issue 17185: Set ``__signature__`` on mock for :mod:`inspect` to get
signature. Patch by Karthikeyan Singaravelan.
- Issue 35047: ``unittest.mock`` now includes mock calls in exception
messages if ``assert_not_called``, ``assert_called_once``, or
``assert_called_once_with`` fails. Patch by Petter Strandmark.
- Issue 28380: unittest.mock Mock autospec functions now properly support
assert_called, assert_not_called, and assert_called_once.
- Issue 28735: Fixed the comparison of mock.MagickMock with mock.ANY.
- Issue 20804: The unittest.mock.sentinel attributes now preserve their
identity when they are copied or pickled.
- Issue 28961: Fix unittest.mock._Call helper: don't ignore the name parameter
anymore. Patch written by Jiajun Huang.
- Issue 26750: unittest.mock.create_autospec() now works properly for
subclasses of property() and other data descriptors.
- Issue 21271: New keyword only parameters in reset_mock call.
- Issue 26807: mock_open 'files' no longer error on readline at end of file.
Patch from Yolanda Robla.
- Issue 25195: Fix a regression in mock.MagicMock. _Call is a subclass of
tuple (changeset 3603bae63c13 only works for classes) so we need to
implement __ne__ ourselves. Patch by Andrew Plummer.
```
Links
- PyPI: https://pypi.org/project/mock
- Changelog: https://pyup.io/changelogs/mock/
- Docs: http://mock.readthedocs.org/en/latest/
This PR updates mock from 2.0.0 to 4.0.0.
Changelog
### 4.0.0 ``` ----- - No Changes from 4.0.0b1. ``` ### 4.0.0b1 ``` ------- - The release is a fresh cut of cpython's `4a686504`__. All changes to :mod:`mock` from that commit and before are included in this release along with the subsequent changes listed below. __ https://github.com/python/cpython/commit/4a686504eb2bbf69adf78077458508a7ba131667 - Issue 37972: Subscripts to the `unittest.mock.call` objects now receive the same chaining mechanism as any other custom attributes, so that the following usage no longer raises a `TypeError`: call().foo().__getitem__('bar') Patch by blhsing - Issue 38839: Fix some unused functions in tests. Patch by Adam Johnson. - Issue 39485: Fix a bug in :func:`unittest.mock.create_autospec` that would complain about the wrong number of arguments for custom descriptors defined in an extension module returning functions. - Issue 39082: Allow AsyncMock to correctly patch static/class methods - Issue 38093: Fixes AsyncMock so it doesn't crash when used with AsyncContextManagers or AsyncIterators. - Issue 38859: AsyncMock now returns StopAsyncIteration on the exaustion of a side_effects iterable. Since PEP-479 its Impossible to raise a StopIteration exception from a coroutine. - Issue 38163: Child mocks will now detect their type as either synchronous or asynchronous, asynchronous child mocks will be AsyncMocks and synchronous child mocks will be either MagicMock or Mock (depending on their parent type). - Issue 38473: Use signature from inner mock for autospecced methods attached with :func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan. - Issue 38136: Changes AsyncMock call count and await count to be two different counters. Now await count only counts when a coroutine has been awaited, not when it has been called, and vice-versa. Update the documentation around this. - Issue 37555: Fix `NonCallableMock._call_matcher` returning tuple instead of `_Call` object when `self._spec_signature` exists. Patch by Elizabeth Uselton - Issue 37251: Remove `__code__` check in AsyncMock that incorrectly evaluated function specs as async objects but failed to evaluate classes with `__await__` but no `__code__` attribute defined as async objects. - Issue 38669: Raise :exc:`TypeError` when passing target as a string with :meth:`unittest.mock.patch.object`. - Issue 25597: Ensure, if ``wraps`` is supplied to :class:`unittest.mock.MagicMock`, it is used to calculate return values for the magic methods instead of using the default return values. Patch by Karthikeyan Singaravelan. - Issue 38108: Any synchronous magic methods on an AsyncMock now return a MagicMock. Any asynchronous magic methods on a MagicMock now return an AsyncMock. - Issue 21478: Record calls to parent when autospecced object is attached to a mock using :func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan. - Issue 38857: AsyncMock fix for return values that are awaitable types. This also covers side_effect iterable values that happend to be awaitable, and wraps callables that return an awaitable type. Before these awaitables were being awaited instead of being returned as is. - Issue 38932: Mock fully resets child objects on reset_mock(). Patch by Vegard Stikbakke - Issue 37685: Fixed ``__eq__``, ``__lt__`` etc implementations in some classes. They now return :data:`NotImplemented` for unsupported type of the other operand. This allows the other operand to play role (for example the equality comparison with :data:`~unittest.mock.ANY` will return ``True``). - Issue 37212: :func:`unittest.mock.call` now preserves the order of keyword arguments in repr output. Patch by Karthikeyan Singaravelan. - Issue 37828: Fix default mock name in :meth:`unittest.mock.Mock.assert_called` exceptions. Patch by Abraham Toriz Cruz. - Issue 36871: Improve error handling for the assert_has_calls and assert_has_awaits methods of mocks. Fixed a bug where any errors encountered while binding the expected calls to the mock's spec were silently swallowed, leading to misleading error output. - Issue 21600: Fix :func:`mock.patch.stopall` to stop active patches that were created with :func:`mock.patch.dict`. - Issue 38161: Removes _AwaitEvent from AsyncMock. - Issue 36871: Ensure method signature is used instead of constructor signature of a class while asserting mock object against method calls. Patch by Karthikeyan Singaravelan. ``` ### 3.0.5 ``` ----- - Issue 31855: :func:`unittest.mock.mock_open` results now respects the argument of read([size]). Patch contributed by Rémi Lapeyre. ``` ### 3.0.4 ``` ----- - Include the license, readme and changelog in the source distribution. ``` ### 3.0.3 ``` ----- - Fixed patching of dictionaries, when specifying the target with a unicode on Python 2. ``` ### 3.0.2 ``` ----- - Add missing ``funcsigs`` dependency on Python 2. ``` ### 3.0.1 ``` ----- - Fix packaging issue where ``six`` was missed as a dependency. ``` ### 3.0.0 ``` ----- - Issue 35226: Recursively check arguments when testing for equality of :class:`unittest.mock.call` objects and add note that tracking of parameters used to create ancestors of mocks in ``mock_calls`` is not possible. - Issue 31177: Fix bug that prevented using :meth:`reset_mock <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes - Issue 26704: Added test demonstrating double-patching of an instance method. Patch by Anthony Sottile. - Issue 35500: Write expected and actual call parameters on separate lines in :meth:`unittest.mock.Mock.assert_called_with` assertion errors. Contributed by Susan Su. - Issue 35330: When a :class:`Mock` instance was used to wrap an object, if `side_effect` is used in one of the mocks of it methods, don't call the original implementation and return the result of using the side effect the same way that it is done with return_value. - Issue 30541: Add new function to seal a mock and prevent the automatically creation of child mocks. Patch by Mario Corchero. - Issue 35022: :class:`unittest.mock.MagicMock` now supports the ``__fspath__`` method (from :class:`os.PathLike`). - Issue 33516: :class:`unittest.mock.MagicMock` now supports the ``__round__`` magic method. - Issue 35512: :func:`unittest.mock.patch.dict` used as a decorator with string target resolves the target during function call instead of during decorator construction. Patch by Karthikeyan Singaravelan. - Issue 36366: Calling ``stop()`` on an unstarted or stopped :func:`unittest.mock.patch` object will now return `None` instead of raising :exc:`RuntimeError`, making the method idempotent. Patch byKarthikeyan Singaravelan. - Issue 35357: Internal attributes' names of unittest.mock._Call and unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with _mock_ in order to prevent clashes with widely used object attributes. Fixed minor typo in test function name. - Issue 20239: Allow repeated assignment deletion of :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo. - Issue 35082: Don't return deleted attributes when calling dir on a :class:`unittest.mock.Mock`. - Issue 0: Improved an error message when mock assert_has_calls fails. - Issue 23078: Add support for :func:`classmethod` and :func:`staticmethod` to :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa. - Issue 21478: Calls to a child function created with :func:`unittest.mock.create_autospec` should propagate to the parent. Patch by Karthikeyan Singaravelan. - Issue 36598: Fix ``isinstance`` check for Mock objects with spec when the code is executed under tracing. Patch by Karthikeyan Singaravelan. - Issue 32933: :func:`unittest.mock.mock_open` now supports iteration over the file contents. Patch by Tony Flury. - Issue 21269: Add ``args`` and ``kwargs`` properties to mock call objects. Contributed by Kumar Akshay. - Issue 17185: Set ``__signature__`` on mock for :mod:`inspect` to get signature. Patch by Karthikeyan Singaravelan. - Issue 35047: ``unittest.mock`` now includes mock calls in exception messages if ``assert_not_called``, ``assert_called_once``, or ``assert_called_once_with`` fails. Patch by Petter Strandmark. - Issue 28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once. - Issue 28735: Fixed the comparison of mock.MagickMock with mock.ANY. - Issue 20804: The unittest.mock.sentinel attributes now preserve their identity when they are copied or pickled. - Issue 28961: Fix unittest.mock._Call helper: don't ignore the name parameter anymore. Patch written by Jiajun Huang. - Issue 26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors. - Issue 21271: New keyword only parameters in reset_mock call. - Issue 26807: mock_open 'files' no longer error on readline at end of file. Patch from Yolanda Robla. - Issue 25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer. ```Links
- PyPI: https://pypi.org/project/mock - Changelog: https://pyup.io/changelogs/mock/ - Docs: http://mock.readthedocs.org/en/latest/