Testing

Python bietet einige Möglichkeiten um den Code zu testen.

doctest

Sucht in den Kommentaren nach interaktiven Python Sitzungen. Dadurch entstehen Kommentare welche die Funktionsweise erklären und gleichzeitig als Tests funktionieren.

Ruft man die Datei direkt auf werden die Tests ausgeführt, die Datei kann wie gewohnt importiert werden.

unittest

Das Standard Unit Testing Framework für Python.

Auch hier das gleiche Verhalten beim direkten Aufruf werden die Tests ausgeführt. Der Test kann sich auch mit in der Datei befinden wie die Kommentare von doctest zuvor, hier ist es eine Datei die mit test_ beginnt.

pytest

Ein weiteres Framework zum schreiben von Tests.
Es muss installiert werden da es nicht zur Standard Bibliothek gehört.

Pytest sucht im Verzeichnis nach Dateien die mit test_ beginnen und führt diese aus.

Auch doctest kann mit Pytest ausgeführt werden.

Eine XML Datei erstellen oder nach dem ersten fehlgeschlagenen Test aufhören.

Markers
pytest bietet die Möglichkeit Tests zu markieren. Eine Test kann mehr als einen Marker haben und ein Marker kann mehrere Tests markieren, Marker werden als Decorator geschrieben.

Um nur bestimmte Tests auszuführen kann man mit -m und dem entsprechenden Ausdruck die Marker bestimmen.

Wenn nur ein Test ausgeführt werden soll kann dies beim Aufruf definiert werden.

Alle verfügbaren Marker auflisten.

Der Builtin pytest.mark.parametrize Marker macht es möglich Parameter mitzugeben.

Der Marker kann auch mehrfach verwendet werden.

nose

War ein Fork von pytest als es die Version 0.8 hatte.

Nose sucht im Verzeichnis nach Dateien die mit test_ beginnen und führt diese aus.

Auch Nose kann beim direkten Aufruf ausgeführt werden.