visual Wie setzen Sie DEBUG beim Ausführen eines Django-Tests auf "True"?




vs code run python file in terminal shortcut (4)

Für einen bestimmten Test in einem Testfall können Sie den Dekorator override_settings verwenden:

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

Ich führe zurzeit einige Django-Tests durch und es sieht so aus, dass DEBUG=False standardmäßig DEBUG=False ist. Gibt es eine Möglichkeit, einen bestimmten Test auszuführen, bei dem ich auf der Befehlszeile oder im Code DEBUG=True setzen kann?


Ab Django 1.11 können Sie --debug-mode , um die DEBUG-Einstellung vor dem Ausführen von Tests auf True zu setzen.


Sie können die Ergebnisse von DEBUG=True nicht sehen, wenn Sie einen Komponententest ausführen. Die Seiten werden nirgendwo angezeigt. Kein Browser

Das Ändern von DEBUG hat keine Auswirkungen, da die Webseiten (mit der Debugging-Ausgabe) nirgendwo sichtbar sind.

Wenn Sie eine Debugging-Webseite sehen möchten, die sich auf einen fehlerhaften Komponententest bezieht, dann führen Sie dies aus.

  1. Legen Sie Ihre Entwicklungsdatenbank ab.

  2. syncdb , um eine leere Entwicklungsdatenbank zu erstellen.

  3. Führen Sie die verschiedenen loaddata Skripts aus, um die Fixtures für diesen Test in Ihrer Entwicklungsdatenbank neu zu loaddata .

  4. Führen Sie den Server aus und durchsuchen Sie die Seite.

Jetzt können Sie die Debug-Ausgabe sehen.


Okay, sagen wir, ich möchte Tests für Fehler-Testfälle schreiben, für die die URLs lauten: -

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)

Hoffe du hast eine Idee!





django