[3.8] bpo-35685: Add examples of unittest.mock.patch.dict usage (GH-11456) by miss-islington · Pull Request #16031 · python/cpython
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
: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