gpt4 book ai didi

python - 如何在 Django 中使用 `DEBUG=TRUE` 运行测试

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:04 26 4
gpt4 key购买 nike

我正在尝试为我的自定义错误页面 View 编写测试:-可以找到文档 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

views.py 是:-

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)

当我手动点击该网址时,我会得到正确的响应代码,即用于访问 /500500 等等。由于只有在默认情况下 setting.DEBUG=True 且测试用例在 DEFAULT=False 和模式下运行时才会包含这些网址,因此我尝试使用 @ 覆盖它override_settings 装饰器

我的 test.py 文件是:-

@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_settings没有任何区别,无论有没有它,我都会得到相同的断言错误。我每次测试都会收到 404 状态代码,即

对于test_500_error:- 响应 = self.client.get('/500/') 断言错误:404!= 500

对于test_400_error:- 响应 = self.client.get('/500/') 断言错误:404!= 400

注意:- 当我使用DEBUG=False`访问这些网址时,会返回相同的错误代码“404”。






最佳答案





这是测试您 500 的方法



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)

关于python - 如何在 Django 中使用 `DEBUG=TRUE` 运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45896954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com