So sehen Sie, welche Tests während des Befehls manage.py von Django ausgeführt wurden

80

Nachdem die Testausführung mit dem manage.py testBefehl von Django abgeschlossen wurde, wird nur die Anzahl der bestandenen Tests auf der Konsole gedruckt.

(virtualenv) G:\Project\>python manage.py test
Creating test database for alias 'default'...
True
..
----------------------------------------------------------------------
Ran 2 tests in 0.017s

OK
Destroying test database for alias 'default'...

Gibt es eine Möglichkeit zu sehen:

  1. welche Tests wurden tatsächlich ausgeführt
  2. von welchem ​​Modul
  3. in welcher Reihenfolge

Ich habe im Dokument keine Lösung gefunden.

Mariusz Jamro
quelle

Antworten:

128

Sie können -v 2an den testBefehl übergeben:

python manage.py test -v 2

Nachdem Sie diesen Befehl ausgeführt haben, erhalten Sie ungefähr Folgendes: Ich verwende Django 2 und kann Migrationen / Datenbank-Inhalte ignorieren.

Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles
  Apply all migrations: admin, auth, contenttypes, sessions
Synchronizing apps without migrations:
  Creating tables...
   Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK
  ...
  Applying sessions.0001_initial... OK
System check identified no issues (0 silenced).
test_equal_hard (polls.tests.TestHard) ... ok      <--------+
test_equal_simple (polls.tests.TestSimple) ... ok  <--------+
                                                            |
                                                            |
           That's your tests!  >----------------------------+

vSteht übrigens für Ausführlichkeit (Sie können auch verwenden --verbosity=2):

python manage.py test --verbosity=2

Hier ist der Auszug aus python manage.py test --help:

-v {0,1,2,3}, --verbosity {0,1,2,3}

Ausführlichkeitsstufe; 0 = minimale Ausgabe, 1 = normale Ausgabe, 2 = ausführliche Ausgabe, 3 = sehr ausführliche Ausgabe

Nigel Tufnel
quelle
22

Nigels Antwort ist großartig und definitiv die niedrigste Eintrittsbarriere. Sie können jedoch noch besseres Feedback erhalten django_nose(und es ist nicht so schwierig einzurichten;).

Das Folgende ist von: BDD mit Python

Erstens: Installieren Sie einige Anforderungen:

pip install nose pinocchio django_nose

Fügen Sie dann Folgendes hinzu settings.py

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['--with-spec', '--spec-color']

Führen Sie dann Ihre Tests wie gewohnt aus:

python manage.py test

Die Ausgabe sollte ungefähr so ​​aussehen:

Geben Sie hier die Bildbeschreibung ein

Hinweis: Die Kommentare unter Ihren Tests können verwendet werden, um eine noch bessere Ausgabe als nur den Namen zu erzielen.

z.B:

def test_something(self):
    """Something should happen"""
    ...

Gibt beim Ausführen des Tests "Etwas sollte passieren" aus.

Für zusätzliche Punkte: Sie können auch Ihre Codeabdeckung generieren / ausgeben:

pip install coverage

Fügen Sie Ihrem NOSE_ARGS in settings.py Folgendes hinzu: '--with-coverage', '--cover-html', '--cover-package=.', '--cover-html-dir=reports/cover'

z.B:

NOSE_ARGS = ['--with-spec', '--spec-color', 
         '--with-coverage', '--cover-html', 
         '--cover-package=.', '--cover-html-dir=reports/cover']

Dann erhalten Sie beim Ausführen eine schöne Zusammenfassung der Codeabdeckung python manage.py testsowie einen übersichtlichen HTML-Bericht inreports/cover

toast38coza
quelle
Hi @ toast38coza. Das ist ziemlich ordentlich. Ich bin neu in Python und es ist schön, gut formatierte Testausgaben zu sehen. Ich habe nach Dokumentation für NOSE_ARGS gesucht, aber nichts von dem, was ich gefunden habe, zeigt - Mit Spezifikation und ähnlichem. Könnten Sie mich bitte darauf hinweisen? Ich versuche im Grunde zu verhindern, dass sich die Nase wiederholt. "Ähnlich wie TransactionTestCase, aber verwenden transaction.atomic(), um eine Testisolation zu erreichen ......... nTestCase ist möglicherweise erforderlich (z. B. Testen eines bestimmten Transaktionsverhaltens)."
Macario Tala
@MacarioTala Das Argument --with-spec stammt vom pinocchioPlugin (das können Sie per Pip installieren). Sehen Sie, wo oben steht: "Installieren Sie zuerst einige Anforderungen".
Toast38coza
Ja. Ich habe das installiert. Lassen Sie mich dann versuchen, Dokumentation zu Pinocchio zu finden. Vielen Dank!
Macario Tala
1
Im Interesse des Teilens habe ich Pinocchio ausgetauscht, da es ein wenig zu ausführlich war, und anstatt es zu forken , fand ich Folgendes : gfxmonk.net/dist/0install/rednose.xml , es könnte Ihnen auch gefallen.
Macario Tala