summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/topics/testing/tools.txt17
1 files changed, 17 insertions, 0 deletions
diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt
index 8354771685..92e96e8c98 100644
--- a/docs/topics/testing/tools.txt
+++ b/docs/topics/testing/tools.txt
@@ -1277,6 +1277,23 @@ The decorator can also be applied to test case classes::
decorator. For a given class, :func:`~django.test.modify_settings` is
always applied after :func:`~django.test.override_settings`.
+.. admonition:: Considerations with Python 3.5
+
+ If using Python 3.5 (or older, if using an older version of Django), avoid
+ mixing ``remove`` with ``append`` and ``prepend`` in
+ :func:`~django.test.modify_settings`. In some cases it matters whether a
+ value is first added and then removed or vice versa, and dictionary key
+ order isn't preserved until Python 3.6. Instead, apply the decorator twice
+ to guarantee the order of operations. For example, to ensure that
+ ``SessionMiddleware`` appears first in ``MIDDLEWARE``::
+
+ @modify_settings(MIDDLEWARE={
+ 'remove': ['django.contrib.sessions.middleware.SessionMiddleware'],
+ )
+ @modify_settings(MIDDLEWARE={
+ 'prepend': ['django.contrib.sessions.middleware.SessionMiddleware'],
+ })
+
.. warning::
The settings file contains some settings that are only consulted during