[Python-checkins] docs: Add references to AsyncMock in unittest.mock.patch (GH-13681)
Miss Islington (bot)
webhook-mailer at python.org
Tue Sep 10 09:15:23 EDT 2019
https://github.com/python/cpython/commit/eaa1b09412cc82ba830fd731016278af26b9099b
commit: eaa1b09412cc82ba830fd731016278af26b9099b
branch: 3.8
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2019-09-10T06:15:19-07:00
summary:
docs: Add references to AsyncMock in unittest.mock.patch (GH-13681)
Update the docs as patch can now return an AsyncMock if the patched
object is an async function.
(cherry picked from commit f5e7f39d2916ed150e80381faed125f405a11e11)
Co-authored-by: Mario Corchero <mcorcherojim at bloomberg.net>
files:
M Doc/library/unittest.mock.rst
M Lib/unittest/mock.py
diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst
index b2547546f3d6..04ff8a61da3c 100644
--- a/Doc/library/unittest.mock.rst
+++ b/Doc/library/unittest.mock.rst
@@ -1321,8 +1321,10 @@ patch
is patched with a *new* object. When the function/with statement exits
the patch is undone.
- If *new* is omitted, then the target is replaced with a
- :class:`MagicMock`. If :func:`patch` is used as a decorator and *new* is
+ If *new* is omitted, then the target is replaced with an
+ :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
decorated function. If :func:`patch` is used as a context manager the created
mock is returned by the context manager.
@@ -1340,8 +1342,8 @@ patch
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,
- that will be called to create the *new* object. By default :class:`MagicMock` is
- used.
+ that will be called to create the *new* object. By default :class:`AsyncMock`
+ is used for async functions and :class:`MagicMock` for the rest.
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.
@@ -1505,6 +1507,10 @@ work as expected::
...
>>> test()
+.. versionchanged:: 3.8
+
+ :func:`patch` now returns an :class:`AsyncMock` if the target is an async function.
+
patch.object
~~~~~~~~~~~~
@@ -2289,6 +2295,12 @@ See :ref:`auto-speccing` for examples of how to use auto-speccing with
: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
~~~
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py
index 7a4fcf4e3aa9..915883db8802 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -1631,8 +1631,9 @@ def patch(
is patched with a `new` object. When the function/with statement exits
the patch is undone.
- If `new` is omitted, then the target is replaced with a
- `MagicMock`. If `patch` is used as a decorator and `new` is
+ If `new` is omitted, then the target is replaced with an
+ `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
decorated function. If `patch` is used as a context manager the created
mock is returned by the context manager.
@@ -1650,8 +1651,8 @@ def patch(
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,
- that will be called to create the `new` object. By default `MagicMock` is
- used.
+ that will be called to create the `new` object. By default `AsyncMock` is
+ used for async functions and `MagicMock` for the rest.
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.
More information about the Python-checkins
mailing list