summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/releases/1.6.txt23
-rw-r--r--docs/topics/auth/customizing.txt14
2 files changed, 33 insertions, 4 deletions
diff --git a/docs/releases/1.6.txt b/docs/releases/1.6.txt
index 7cded8c544..0f52f224ce 100644
--- a/docs/releases/1.6.txt
+++ b/docs/releases/1.6.txt
@@ -442,6 +442,29 @@ but will not be removed from Django until version 1.8.
.. _recommendations in the Python documentation: http://docs.python.org/2/library/doctest.html#unittest-api
+Custom User models in tests
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The introduction of the new test runner has also slightly changed the way that
+test models are imported. As a result, any test that overrides ``AUTH_USER_MODEL``
+to test behavior with one of Django's test user models (
+:class:`~django.contrib.auth.tests.custom_user.CustomUser` and
+:class:`~django.contrib.auth.tests.custom_user.ExtensionUser`) must now
+explicitly import the User model in your test module::
+
+ from django.contrib.auth.tests.custom_user import CustomUser
+
+ @override_settings(AUTH_USER_MODEL='auth.CustomUser')
+ class CustomUserFeatureTests(TestCase):
+ def test_something(self):
+ # Test code here ...
+
+This import forces the custom user model to be registered. Without this import,
+the test will be unable to swap in the custom user model, and you will get an
+error reporting::
+
+ ImproperlyConfigured: AUTH_USER_MODEL refers to model 'auth.CustomUser' that has not been installed
+
Time zone-aware ``day``, ``month``, and ``week_day`` lookups
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/topics/auth/customizing.txt b/docs/topics/auth/customizing.txt
index 1407ed4d8f..273f65f09e 100644
--- a/docs/topics/auth/customizing.txt
+++ b/docs/topics/auth/customizing.txt
@@ -855,12 +855,14 @@ that the application works with *any* user model, not just the default User
model. To assist with this, Django provides two substitute user models that
can be used in test suites:
-* ``django.contrib.auth.tests.custom_user.CustomUser``, a custom user
- model that uses an ``email`` field as the username, and has a basic
+.. class:: tests.custom_user.CustomUser
+
+ A custom user model that uses an ``email`` field as the username, and has a basic
admin-compliant permissions setup
-* ``django.contrib.auth.tests.custom_user.ExtensionUser``, a custom
- user model that extends ``django.contrib.auth.models.AbstractUser``,
+.. class:: tests.custom_user.ExtensionUser
+
+ A custom user model that extends ``django.contrib.auth.models.AbstractUser``,
adding a ``date_of_birth`` field.
You can then use the ``@override_settings`` decorator to make that test run
@@ -869,6 +871,7 @@ would test three possible User models -- the default, plus the two User
models provided by ``auth`` app::
from django.contrib.auth.tests.utils import skipIfCustomUser
+ from django.contrib.auth.tests.custom_user import CustomUser, ExtensionUser
from django.test import TestCase, override_settings
@@ -888,6 +891,9 @@ models provided by ``auth`` app::
"Run tests for a simple extension of the built-in User."
self.assertSomething()
+.. versionchanged:: 1.6
+
+ In Django 1.5, it wasn't necessary to explicitly import the test User models.
A full example
--------------