summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/internals/deprecation.txt4
-rw-r--r--docs/releases/3.2.txt9
-rw-r--r--docs/topics/testing/tools.txt12
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: