代码之家  ›  专栏  ›  技术社区  ›  Abhimanyu

如何在Django中使用“DEBUG=TRUE”运行测试

  •  1
  • Abhimanyu  · 技术社区  · 7 年前

    我正在尝试为自定义错误页面视图编写测试:- 可以找到文档 here

    here :-

    if settings.DEBUG:
        urlpatterns += [
            url(r'^404/$', page_not_found_view),
            url(r'^500/$', my_custom_error_view),
            url(r'^400/$', bad_request_view),
            url(r'^403/$', permission_denied_view),
        ]
    
    handler404 = page_not_found_view
    handler500 = my_custom_error_view
    handler403 = permission_denied_view
    handler400 = bad_request_view
    

    def page_not_found_view(request):
        t = loader.get_template('error/HTTP404.html')
        html = html = t.render({})
        return HttpResponseNotFound(html)
    
    
    def my_custom_error_view(request):
        t = loader.get_template('error/HTTP500.html')
        html = html = t.render({})
        return HttpResponseServerError(html)
    
    
    def permission_denied_view(request):
        t = loader.get_template('error/HTTP403.html')
        html = html = t.render({})
        return HttpResponseForbidden(html)
    
    
    def bad_request_view(request):
        t = loader.get_template('error/HTTP400.html')
        html = html = t.render({})
        return HttpResponseBadRequest(html)
    

    500 参观 /500 等等 setting.DEBUG=True 默认情况下,测试用例在 DEFAULT=False 我试着用 @override_settings

    @override_settings(DEBUG=True)
    class ErroCodeUrl(TestCase):
        def test_400_error(self):
            response = self.client.get('/400/')
            self.assertEqual(response.status_code, 500)
    
    def test_403_error(self):
        response = self.client.get('/403/')
        self.assertEqual(response.status_code, 500)
    
    def test_404_error(self):
        response = self.client.get('/404/')
        self.assertEqual(response.status_code, 500)
    
    def test_500_error(self):
        response = self.client.get('/500/')
        self.assertEqual(response.status_code, 500)
    

    但是用这个 @override\u设置 没有任何区别,无论有没有它,我都会得到相同的断言错误。我正在 404状态代码 每次测试,即

    对于 test_500_error 响应=自身。客户获取(“/500/”)

    对于 test_400_error :- 断言错误:404!=400

    笔记 is returned when i visited these url with 调试=False“”。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Papouche Guinslyzinho    7 年前

    from django.test import TestCase
    from django.test.client import RequestFactory
    from .views import my_custom_error_view
    
    class TestMyErrorPages(TestCase):
    
        def test_error_handlers(self):
            factory = RequestFactory()
            request = factory.get('/')
            response = my_custom_error_view(request)
            self.assertEqual(response.status_code, 500)