Skip to content

[3.8] bpo-35685: Add examples of unittest.mock.patch.dict usage (GH-11456) #16031

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 12, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 27 additions & 4 deletions Doc/library/unittest.mock.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1572,15 +1572,36 @@ patch.dict
:func:`patch.dict` can also be called with arbitrary keyword arguments to set
values in the dictionary.

:func:`patch.dict` can be used as a context manager, decorator or class
decorator. When used as a class decorator :func:`patch.dict` honours
``patch.TEST_PREFIX`` for choosing which methods to wrap.

.. versionchanged:: 3.8

:func:`patch.dict` now returns the patched dictionary when used as a context
manager.

:func:`patch.dict` can be used as a context manager, decorator or class
decorator:

>>> foo = {}
>>> @patch.dict(foo, {'newkey': 'newvalue'})
... def test():
... assert foo == {'newkey': 'newvalue'}
>>> test()
>>> assert foo == {}

When used as a class decorator :func:`patch.dict` honours
``patch.TEST_PREFIX`` (default to ``'test'``) for choosing which methods to wrap:

>>> import os
>>> import unittest
>>> from unittest.mock import patch
>>> @patch.dict('os.environ', {'newkey': 'newvalue'})
... class TestSample(unittest.TestCase):
... def test_sample(self):
... self.assertEqual(os.environ['newkey'], 'newvalue')

If you want to use a different prefix for your test, you can inform the
patchers of the different prefix by setting ``patch.TEST_PREFIX``. For
more details about how to change the value of see :ref:`test-prefix`.

:func:`patch.dict` can be used to add members to a dictionary, or simply let a test
change a dictionary, and ensure the dictionary is restored when the test
ends.
Expand Down Expand Up @@ -1793,6 +1814,8 @@ builtin :func:`ord`::
101


.. _test-prefix:

TEST_PREFIX
~~~~~~~~~~~

Expand Down