我目前正在运行一些Django测试,默认情况下看起来是DEBUG=False
。有没有办法运行特定的测试,我可以在命令行或代码中设置DEBUG=True
?
答案 0 :(得分:77)
对于测试用例中的特定测试,您可以使用override_settings装饰器:
from django.test.utils import override_settings
from django.conf import settings
class TestSomething(TestCase):
@override_settings(DEBUG=True)
def test_debug(self):
assert settings.DEBUG
答案 1 :(得分:21)
Starting with Django 1.11 you can use --debug-mode
to set the DEBUG setting to True prior to running tests.
答案 2 :(得分:11)
接受的答案对我不起作用。我使用Selenium进行测试,设置@override_settings(DEBUG=True)
会使测试浏览器在每个页面上始终显示404
错误。并且DEBUG=False
不显示异常回溯。所以我找到了解决方法。
我们的想法是使用自定义DEBUG=True
处理程序和内置的django 500
错误处理程序来模拟500
行为。
将此添加到 myapp.views:
import sys
from django import http
from django.views.debug import ExceptionReporter
def show_server_error(request):
"""
500 error handler to show Django default 500 template
with nice error information and traceback.
Useful in testing, if you can't set DEBUG=True.
Templates: `500.html`
Context: sys.exc_info() results
"""
exc_type, exc_value, exc_traceback = sys.exc_info()
error = ExceptionReporter(request, exc_type, exc_value, exc_traceback)
return http.HttpResponseServerError(error.get_traceback_html())
urls.py:
from django.conf import settings
if settings.TESTING_MODE:
# enable this handler only for testing,
# so that if DEBUG=False and we're not testing,
# the default handler is used
handler500 = 'myapp.views.show_server_error'
settings.py:
# detect testing mode
import sys
TESTING_MODE = 'test' in sys.argv
现在,如果您的任何Selenium测试遇到500错误,您将看到一个带有回溯和所有内容的错误页面。如果运行正常的非测试环境,则使用默认的500处理程序。
灵感来自:
答案 3 :(得分:0)
好的,我想说我想为错误测试用例编写测试用例: -
<强> urls.py 强>
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),
]
<强> test_urls.py 强>: -
from django.conf import settings
class ErroCodeUrl(TestCase):
def setUp(self):
settings.DEBUG = True
def test_400_error(self):
response = self.client.get('/400/')
self.assertEqual(response.status_code, 500)
希望你有所了解!
答案 4 :(得分:0)
除了https://stackoverflow.com/a/1118271/5750078以外,对我没有任何帮助 使用Python 3.7
breakpoint()
方法。 在pycharm上正常工作
答案 5 :(得分:-3)
运行单元测试时,您无法看到DEBUG=True
的结果。页面不会显示在任何地方。没有浏览器。
更改DEBUG
无效,因为网页(带有调试输出)在任何地方都不可见。
如果您想查看与失败的单元测试相关的调试网页,请执行此操作。
删除您的开发数据库。
重新运行syncdb
以构建空的开发数据库。
运行各种loaddata
脚本,在开发数据库中重建该测试的灯具。
运行服务器并浏览页面。
现在您可以看到调试输出。