Fixed -- Documented how to test custom error views.
@@ -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)
