diff options
| author | Cammil Taank <ctaank@gmail.com> | 2018-09-19 11:57:34 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-10-01 18:16:47 -0400 |
| commit | f83a689f617d119a2bed23032919cea98c424c58 (patch) | |
| tree | 259c24bc502e8e8e69df4f9e9ebf8b5c369d0c90 /docs | |
| parent | b3b47bf5156d400595363fa0029e51ce3f974ff0 (diff) | |
Fixed #29758 -- Documented how to test custom error views.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/topics/http/views.txt | 36 |
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) |
