Automatisierte Tests für Python mit dem Doctest-Modul ===================================================== Für Software in der Programmiersprache Python [1] gibt es verschiedene Test-Frameworks. Eine ganz normale Python-Installation bringt zwei davon mit: das bekanntere unittest-Modul [2] und das weniger bekannte, aber besonders einfach zu verwendende Doctest-Modul [3], auf das dieser Vortrag eingeht. Vorausgesetzt werden nur Grundkenntnisse in Python. Hintergrundwissen zum automatisierten Testen [4] ist praktisch, wird in Grundzügen aber auch in diesem Vortrag vermittelt. Der Vortrag geht zuerst auf die Frage ein, was mit automatisierten Tests gemeint ist und wie sie bei der Softwareentwicklung helfen. Auch das Thema Testgetriebene Entwicklung [5], also das Schreiben der Tests vor dem zu testenden Code, wird dabei angeschnitten. Dieser Teil ist weitgehend unabhängig von Python, also auch auf andere Programmiersprachen übertragbar. Danach folgt ein Beispiel für die einfachste Anwendung von Doctests, nämlich Testen von Code in Docstrings, die Bestandteil so ziemlich jeder Funktion oder Methode in Python-Programmen sind. Die Grundidee von Doctests ist es, wie im interaktiven Python-Interpreter formatierte Code-Sequenzen auszuführen und die tatsächlichen Ausgaben mit den erwarteten zu vergleichen. Neben der Einbettung von Testcode in Docstrings ist es mit dem Doctest-Modul aber auch möglich, Tests in Textdateien auszulagern, die eine Mischung von beschreibendem Text und ausführbaren Tests enthalten, was auch als Literate Testing bezeichnet wird [6]. Wenn der Text dabei relativ grundlegenden Code zeigt, können solche kombinierten Dateien auch Bestandteil der Software-Dokumentation sein. Verwendet man reStructuredText [7] oder ähnliche Formate, kann man die Textdateien in HTML-Dateien oder andere Dateiformate umwandeln. Danach geht es an Tipps und Tricks, die typische Probleme beim Arbeiten mit dem Doctest-Modul lösen. Ein Beispiel ist die Doctest-Optionen ELLIPSIS, die "zufällige" Teile der Ausgabe verschiedener Testläufe vereinheitlicht. In diesem Abschnitt gibt es auch Empfehlungen zur Organisation der Test-Infrastruktur für Software-Projekte. Der Vortrag schließt mit einem Fragen- und Diskussionsteil. Für weitere Gespräche ist der Vortragende am Stand der Python User Group Leipzig zu finden. ----- [1] http://www.python.org/ [2] http://docs.python.org/library/unittest.html [3] http://docs.python.org/library/doctest.html [4] http://www.evocomp.de/softwareentwicklung/unit-tests/unittests.html [5] http://de.wikipedia.org/wiki/Testgetriebene_Entwicklung [6] http://www.blueskyonmars.com/2004/11/30/literate-testing/ [7] http://docutils.sourceforge.net/docs/user/rst/quickstart.html