Fixed #29758 -- Documented how to test custom error views.
This commit is contained in:
parent
b3b47bf515
commit
f83a689f61
|
@ -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
|
Use the :setting:`CSRF_FAILURE_VIEW` setting to override the CSRF error
|
||||||
view.
|
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)
|
||||||
|
|
Loading…
Reference in New Issue