bpo-35685: Add examples of unittest.mock.patch.dict usage (GH-11456)

This commit is contained in:
Emmanuel Arias 2019-09-12 08:29:54 -03:00 committed by Julien Palard
parent 2c910c1e73
commit 31a82e25b6
1 changed files with 27 additions and 4 deletions

View File

@ -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.
@ -1793,6 +1814,8 @@ builtin :func:`ord`::
101
.. _test-prefix:
TEST_PREFIX
~~~~~~~~~~~