django unittests für apps...

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.
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.

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:
Once you’ve written tests, run them using the test command of your project’s manage.py utility:
Also wieder nur, wenn man ein Projekt hat.


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:])


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Antworten