Commit f5e7f39d authored by Mario Corchero's avatar Mario Corchero Committed by Lisa Roach

docs: Add references to AsyncMock in unittest.mock.patch (#13681)

Update the docs as patch can now return an AsyncMock if the patched
object is an async function.
parent fa3a38d8
...@@ -1307,8 +1307,10 @@ patch ...@@ -1307,8 +1307,10 @@ patch
is patched with a *new* object. When the function/with statement exits is patched with a *new* object. When the function/with statement exits
the patch is undone. the patch is undone.
If *new* is omitted, then the target is replaced with a If *new* is omitted, then the target is replaced with an
:class:`MagicMock`. If :func:`patch` is used as a decorator and *new* is :class:`AsyncMock` if the patched object is an async function or
a :class:`MagicMock` otherwise.
If :func:`patch` is used as a decorator and *new* is
omitted, the created mock is passed in as an extra argument to the omitted, the created mock is passed in as an extra argument to the
decorated function. If :func:`patch` is used as a context manager the created decorated function. If :func:`patch` is used as a context manager the created
mock is returned by the context manager. mock is returned by the context manager.
...@@ -1326,8 +1328,8 @@ patch ...@@ -1326,8 +1328,8 @@ patch
patch to pass in the object being mocked as the spec/spec_set object. patch to pass in the object being mocked as the spec/spec_set object.
*new_callable* allows you to specify a different class, or callable object, *new_callable* allows you to specify a different class, or callable object,
that will be called to create the *new* object. By default :class:`MagicMock` is that will be called to create the *new* object. By default :class:`AsyncMock`
used. is used for async functions and :class:`MagicMock` for the rest.
A more powerful form of *spec* is *autospec*. If you set ``autospec=True`` A more powerful form of *spec* is *autospec*. If you set ``autospec=True``
then the mock will be created with a spec from the object being replaced. then the mock will be created with a spec from the object being replaced.
...@@ -1491,6 +1493,10 @@ work as expected:: ...@@ -1491,6 +1493,10 @@ work as expected::
... ...
>>> test() >>> test()
.. versionchanged:: 3.8
:func:`patch` now returns an :class:`AsyncMock` if the target is an async function.
patch.object patch.object
~~~~~~~~~~~~ ~~~~~~~~~~~~
...@@ -2275,6 +2281,12 @@ See :ref:`auto-speccing` for examples of how to use auto-speccing with ...@@ -2275,6 +2281,12 @@ See :ref:`auto-speccing` for examples of how to use auto-speccing with
:func:`create_autospec` and the *autospec* argument to :func:`patch`. :func:`create_autospec` and the *autospec* argument to :func:`patch`.
.. versionchanged:: 3.8
:func:`create_autospec` now returns an :class:`AsyncMock` if the target is
an async function.
ANY ANY
~~~ ~~~
......
...@@ -1631,8 +1631,9 @@ def patch( ...@@ -1631,8 +1631,9 @@ def patch(
is patched with a `new` object. When the function/with statement exits is patched with a `new` object. When the function/with statement exits
the patch is undone. the patch is undone.
If `new` is omitted, then the target is replaced with a If `new` is omitted, then the target is replaced with an
`MagicMock`. If `patch` is used as a decorator and `new` is `AsyncMock if the patched object is an async function or a
`MagicMock` otherwise. If `patch` is used as a decorator and `new` is
omitted, the created mock is passed in as an extra argument to the omitted, the created mock is passed in as an extra argument to the
decorated function. If `patch` is used as a context manager the created decorated function. If `patch` is used as a context manager the created
mock is returned by the context manager. mock is returned by the context manager.
...@@ -1650,8 +1651,8 @@ def patch( ...@@ -1650,8 +1651,8 @@ def patch(
patch to pass in the object being mocked as the spec/spec_set object. patch to pass in the object being mocked as the spec/spec_set object.
`new_callable` allows you to specify a different class, or callable object, `new_callable` allows you to specify a different class, or callable object,
that will be called to create the `new` object. By default `MagicMock` is that will be called to create the `new` object. By default `AsyncMock` is
used. used for async functions and `MagicMock` for the rest.
A more powerful form of `spec` is `autospec`. If you set `autospec=True` A more powerful form of `spec` is `autospec`. If you set `autospec=True`
then the mock will be created with a spec from the object being replaced. then the mock will be created with a spec from the object being replaced.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment