Wie verbreitet man Django Unit Tests über mehrere Dateien?
- Ich habe ein python-django-Anwendung
- Ich bin mit dem unit-Test-framework
- Die tests sind übersichtlich in der Datei "tests.py" in das Modul-Verzeichnis
- Ich bin mit den tests über
./manage.py test app
Nun..
- Die
tests.py
Datei ist immer ziemlich groß/Komplex/chaotisch - Ich möchte zu brechen
tests.py
in kleinere Sammlungen von tests...
Wie?
Kommentar zu dem Problem
Verändert die akzeptierte Antwort auf das mehr aktuellen (12-Jul-16).
InformationsquelleAutor der Frage John Mee | 2011-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Verhalten hat sich geändert in Django 1.6, so ist es nicht mehr eine Notwendigkeit, um ein Paket zu erstellen. Nur benennen Sie Ihre Dateien
test*.py
.Von Django 1.7 Dokumentation
Vom Django 1.6 Dokumentation,
Vorherigen Verhalten, ab Django 1.5 Dokumentation:
InformationsquelleAutor der Antwort osa
Beachten Sie, dass dieser Ansatz nicht länger gültig von Django 1.6 finden Sie auf dieser post.
Können Sie erstellen
tests
Ordner mit___init___.py
innen (so, dass es immer ein Paket). Sie fügen dann Ihre split-test .py Dateien und importieren Sie alle von Ihnen in___init___.py
.I. e: Ersatz der
test.py
- Datei mit einem Modul, das aussieht und verhält sich wie die Datei:Erstellen Sie eine
tests
Verzeichnis unter der app in FrageImportieren, die Submodule in
app\tests\__init__.py
:Nun können Sie mit ./manage.py als ob Sie alle in einer einzigen Datei:
InformationsquelleAutor der Antwort Tomasz Zielinski
Antwort-wie erwähnt-von Tomasz korrekt ist. Allerdings kann es sehr mühsam werden, um sicherzustellen, dass die Einfuhren in
__init__.py
passen Ihre Datei-Struktur.Zu erkennt automatisch alle tests in den Ordner Sie können fügen Sie diese in
__init__.py
:Diese ermöglicht Ihnen das ausführen
./manage.py test appname
aber nicht behandeln, ausführen spezifischer tests. Zu tun, dass Sie können diesen code verwenden (auch in__init__.py
):Nun kann man alle tests über
manage.py test app
oder spezifisch übermanage.py test app.TestApples
InformationsquelleAutor der Antwort Bryce Drennan
http://docs.python.org/library/unittest.html#organizing-tests Gespräche über die Aufteilung der Dateien in Module, und der Abschnitt rechts oben hat es ein Beispiel.
InformationsquelleAutor der Antwort Jim Deville
Nur Ihre Verzeichnis-Struktur wie diese:
Sowie
python manage.py test myapp
wie erwartet funktionieren wird.InformationsquelleAutor der Antwort spiderlama
Wenn du ein etwas kompliziertes setup, oder nicht verwenden wollen
from ... import *
-type-Anweisungen, können Sie eine Funktion definieren, die aufgerufensuite
in Ihrem tests.py (oder tests/__init__.py) gibt eine Instanz vonunittest.TestSuite
.InformationsquelleAutor der Antwort Joel Cross
Keine Notwendigkeit, code, alles im init.
Einfach erstellen Sie ein Unterverzeichnis in Ihrer app. Einzige Voraussetzung ist nicht nennen, es tests*
Zum Beispiel
InformationsquelleAutor der Antwort MaxBlax360
Ich denke
./manage.py test
einfach hat laufen alle tests trick (in django >= 1.7).Wenn Ihr Organisation von tests ist über Gruppierung und die Rosinen herauszupicken und Sie sind fan von
nose
verwenden django Nase:Wenn Sie wissen, Nase, dann wissen Sie, wie Sie die "wildcard" ist viel schöner, über alle Ihre Dateien.
PS
Ist es nur eine bessere Praxis. Hoffe, das hilft. Die Antwort war geliehen von hier: Einen bestimmten test ausführen Fall in Django, wenn Ihre app-tests-Verzeichnis
InformationsquelleAutor der Antwort Yauhen Yakimovich