Skip to content

Commit

Permalink
bpo-35685: Add examples of unittest.mock.patch.dict usage (GH-11456)
Browse files Browse the repository at this point in the history
  • Loading branch information
eamanu authored and JulienPalard committed Sep 12, 2019
1 parent 2c910c1 commit 31a82e2
Showing 1 changed file with 27 additions and 4 deletions.
31 changes: 27 additions & 4 deletions Doc/library/unittest.mock.rst
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

0 comments on commit 31a82e2

Please sign in to comment.