108👍
For a specific test inside a test case, you can use the override_settings decorator:
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
38👍
Starting with Django 1.11 you can use --debug-mode
to set the DEBUG setting to True prior to running tests.
- [Django]-Validators = [MinValueValidator] does not work in Django
- [Django]-Migrating Django fixtures?
- [Django]-Django storages aws s3 delete file from model record
13👍
The accepted answer didn’t work for me. I use Selenium for testing, and setting @override_settings(DEBUG=True)
makes the test browser always display 404
error on every page. And DEBUG=False
does not show exception tracebacks. So I found a workaround.
The idea is to emulate DEBUG=True
behaviour, using custom 500
handler and built-in django 500
error handler.
-
Add this to 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
Now if any of your Selenium tests encounters 500 error, you’ll see a nice error page with traceback and everything. If you run a normal non-testing environment, default 500 handler is used.
Inspired by:
- [Django]-Django queries: how to filter objects to exclude id which is in a list?
- [Django]-How to have a Python script for a Django app that accesses models without using the manage.py shell?
- [Django]-Django: how to do calculation inside the template html page?
0👍
Okay let’s say you want to write tests for error testcase for which the urls are :-
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)
Hope you got some idea!
- [Django]-Invalid http_host header
- [Django]-How can I serialize a queryset from an unrelated model as a nested serializer?
- [Django]-Django Server Error: port is already in use
0👍
Nothing worked for me except https://stackoverflow.com/a/1118271/5750078
Use Python 3.7
breakpoint()
method.
Works fine on pycharm
- [Django]-Atomic increment of a counter in django
- [Django]-Python 3 list(dictionary.keys()) raises error. What am I doing wrong?
- [Django]-Django URL Redirect
0👍
version 4.2
set an env variable
DJANGO_LOG_LEVEL=DEBUG
https://docs.djangoproject.com/en/4.2/topics/logging/#examples
- [Django]-Switching to PostgreSQL fails loading datadump
- [Django]-Speeding up Django Testing
- [Django]-Add additional options to Django form select widget
-4👍
You can’t see the results of DEBUG=True
when running a unit test. The pages don’t display anywhere. No browser.
Changing DEBUG
has no effect, since the web pages (with the debugging output) are not visible anywhere.
If you want to see a debugging web page related to a failing unit test, then do this.
-
Drop your development database.
-
Rerun
syncdb
to build an empty development database. -
Run the various
loaddata
scripts to rebuild the fixtures for that test in your development database. -
Run the server and browse the page.
Now you can see the debug output.
- [Django]-Django order_by() filter with distinct()
- [Django]-Django Installed Apps Location
- [Django]-Django Celery Logging Best Practice