Mir ist immer noch nicht so ganz klar, wie man am besten unittests für django apps aufbaut.
Die Django Doku zeigt immer nur auf, das die Tests für das Poll-Tutorial-Beispiel-Projekt zu schreiben.
Aber was ist, wenn ich nur eine App entwickle und diese losgelöst von einem Projekt testen will?
Machmal packe ich ein "Example-Projekt" mit dabei. z.B. hier:
https://github.com/jedie/django-secure- ... le_project
Wo finde ich ein best-practice Anleitung um mit möglichst wenig boilerplate code auszukommen?!?
django unittests für apps...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das die tests bei der jeweiligen App liegen, ist schon klar. Mir geht es darum, diese laufen zu lassen. Dazu finde ich nichts, wie man ein "Test-Project" schnell und einfach aufbaut.DasIch hat geschrieben:Wenn du der Django Dokumentation tatsächlich folgen würdest, würdest du die Tests eines ganzen Projekts nicht zusammen werfen, sondern die Tests für die unterschiedlichen Apps separat halten.
Eigentlich gibt es ja nur drei Seiten:
https://docs.djangoproject.com/en/1.7/t ... /overview/
https://docs.djangoproject.com/en/1.7/t ... ing/tools/
https://docs.djangoproject.com/en/1.7/t ... /advanced/
Dann gibt es noch das Tutorial: https://docs.djangoproject.com/en/1.7/intro/tutorial05/ aber da geht es um die poll app innerhalb eines Projektes. Deswegen startet man die Tests auch einfach mit: $ python manage.py test polls
Speziell über das aufrufen der Tests gibt es den Abschnitt Running tests: https://docs.djangoproject.com/en/1.7/t ... ning-tests
Aber:
Also wieder nur, wenn man ein Projekt hat.Once you’ve written tests, run them using the test command of your project’s manage.py utility:
Bei meinem Aktuellen Projekt, hab ich nun wieder ein "Minimal-Test-Projekt" mit eingebaut, hier: https://github.com/jedie/djangocms-find ... c3d7205db7
Also diese Dateien, meine ich:
https://github.com/jedie/djangocms-find ... /manage.py
https://github.com/jedie/djangocms-find ... ettings.py
https://github.com/jedie/djangocms-find ... ts/urls.py
OK, eine settings.py und eine urls.py muß man fast zwangsweise haben. Allerdings gefällt mir die manage.py nicht.
Damit kann ich nicht einzeltests aufrufen. Also muß ich wieder boilerplate code dazupacken, sowas wie hier:
Code: Alles auswählen
import os
import sys
import django
from django.conf import settings
from django.test.utils import get_runner
def run_tests(test_labels=None):
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.test_settings'
django.setup()
TestRunner = get_runner(settings)
test_runner = TestRunner()
if test_labels is None:
test_labels = ['tests']
failures = test_runner.run_tests(test_labels)
sys.exit(bool(failures))
if __name__ == "__main__":
run_tests(test_labels = sys.argv[1:])
Zeugs wie https://github.com/alex/django-taggit/b ... untests.py tut es auch