diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/internals/deprecation.txt | 4 | ||||
| -rw-r--r-- | docs/releases/3.2.txt | 9 | ||||
| -rw-r--r-- | docs/topics/testing/tools.txt | 12 |
3 files changed, 18 insertions, 7 deletions
diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index e48356bed1..d4cc1d2d95 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -15,6 +15,10 @@ about each item can often be found in the release notes of two versions prior. See the :ref:`Django 3.2 release notes <deprecated-features-3.2>` for more details on these changes. +* Support for assigning objects which don't support creating deep copies with + ``copy.deepcopy()`` to class attributes in ``TestCase.setUpTestData()`` will + be removed. + .. _deprecation-removed-in-4.0: 4.0 diff --git a/docs/releases/3.2.txt b/docs/releases/3.2.txt index 4ba20c4c09..b1a0e19edb 100644 --- a/docs/releases/3.2.txt +++ b/docs/releases/3.2.txt @@ -195,7 +195,10 @@ Templates Tests ~~~~~ -* ... +* Objects assigned to class attributes in :meth:`.TestCase.setUpTestData` are + now isolated for each test method. Such objects are now required to support + creating deep copies with :py:func:`copy.deepcopy`. Assigning objects which + don't support ``deepcopy()`` is deprecated and will be removed in Django 4.1. URLs ~~~~ @@ -255,4 +258,6 @@ Features deprecated in 3.2 Miscellaneous ------------- -* ... +* Assigning objects which don't support creating deep copies with + :py:func:`copy.deepcopy` to class attributes in + :meth:`.TestCase.setUpTestData` is deprecated. diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt index b14a173987..eac4fa3ef7 100644 --- a/docs/topics/testing/tools.txt +++ b/docs/topics/testing/tools.txt @@ -873,11 +873,13 @@ It also provides an additional method: (for instance, MySQL with the MyISAM engine), ``setUpTestData()`` will be called before each test, negating the speed benefits. - Be careful not to modify any objects created in ``setUpTestData()`` in - your test methods. Modifications to in-memory objects from setup work done - at the class level will persist between test methods. If you do need to - modify them, you could reload them in the ``setUp()`` method with - :meth:`~django.db.models.Model.refresh_from_db`, for example. + .. versionchanged:: 3.2 + + Objects assigned to class attributes in ``setUpTestData()`` must + support creating deep copies with :py:func:`copy.deepcopy` in order to + isolate them from alterations performed by each test methods. In + previous versions of Django these objects were reused and changes made + to them were persisted between test methods. .. _live-test-server: |
