summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCammil Taank <ctaank@gmail.com>2018-09-19 11:57:34 +0100
committerTim Graham <timograham@gmail.com>2018-10-01 18:16:47 -0400
commitf83a689f617d119a2bed23032919cea98c424c58 (patch)
tree259c24bc502e8e8e69df4f9e9ebf8b5c369d0c90 /docs
parentb3b47bf5156d400595363fa0029e51ce3f974ff0 (diff)
Fixed #29758 -- Documented how to test custom error views.
Diffstat (limited to 'docs')
-rw-r--r--docs/topics/http/views.txt36
1 files changed, 36 insertions, 0 deletions
diff --git a/docs/topics/http/views.txt b/docs/topics/http/views.txt
index 3c7c5e5018..baacd233b5 100644
--- a/docs/topics/http/views.txt
+++ b/docs/topics/http/views.txt
@@ -166,3 +166,39 @@ The :func:`~django.views.defaults.bad_request` view is overridden by
Use the :setting:`CSRF_FAILURE_VIEW` setting to override the CSRF error
view.
+
+Testing custom error views
+--------------------------
+
+To test the response of a custom error handler, raise the appropriate exception
+in a test view. For example::
+
+ from django.core.exceptions import PermissionDenied
+ from django.http import HttpResponse
+ from django.test import SimpleTestCase, override_settings
+ from django.urls import path
+
+
+ def response_error_handler(request, exception=None):
+ return HttpResponse('Error handler content', status=403)
+
+
+ def permission_denied_view(request):
+ raise PermissionDenied
+
+
+ urlpatterns = [
+ path('403/', permission_denied_view),
+ ]
+
+ handler403 = response_error_handler
+
+
+ # ROOT_URLCONF must specify the module that contains handler403 = ...
+ @override_settings(ROOT_URLCONF=__name__)
+ class CustomErrorHandlerTests(SimpleTestCase):
+
+ def test_handler_renders_template_response(self):
+ response = self.client.get('/403/')
+ # Make assertions on the response here. For example:
+ self.assertContains(response, 'Error handler content', status_code=403)