doctest aus anderer datei aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
feuervogel
User
Beiträge: 28
Registriert: Dienstag 18. September 2007, 14:59

Montag 13. April 2009, 17:29

hallo,

ich teste meine django-applikation auch mit doctests. dort werden nur zwei dateien pro app nach doctests durchsucht, nämlich die models.py und die tests.py.

nun habe ich aber auch in der templatetags/math_extra.py doctests stehen, die leider nicht automatisch mit ausgeführt werden.

in der doku von django und den doctests habe ich leider nichst genaueres dazu gefunde, wie ich bewirke, dass auch die doctests in der templatetags/math_extra.py ausgeführt werden...

gibts dafür eine lösung?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Montag 13. April 2009, 18:28

Über `TEST_RUNNER` kann man in `settings.py` einstellen, was aufgerufen werden soll, wenn man `manage.py test` ausführt. Dort steht standardmäßig `django.test.simple.run_tests` und man könnte eine eigene Funktion angeben, die auch andere Dateien berücksichtigt. Ich finde den Code jedoch alles andere als übersichtlich und außer das ich sehe, dass `get_tests` genau ein Modul mit dem Namen aus `TEST_MODULE` lädt, bin ich da schnell verloren.

Einfacher ist vielleicht, einfach `python -m doctest -v yourfile.py` zu benutzen, was mit dem aktuellen Python 2.6.x funktioniert.

Stefan
feuervogel
User
Beiträge: 28
Registriert: Dienstag 18. September 2007, 14:59

Dienstag 14. April 2009, 15:06

ich hab jetzt so viel rausgefunden: django nutzt eine modifizierte version von doctest (zu finden in django.test._doctest).
These changes allow for a DoctestRunner and Doctest base
class to be specified when constructing a DoctestSuite.
und soweit wollte ich mich dann doch nicht einlesen. ich glaube ich schreibe mir lieber ein kleines tests.sh, um die tests nacheinander aufzurufen, so wie ich das möchte. vielen dank jedenfalls für die antwort.
Antworten