Kursinhalt
Python Fortgeschrittene Konzepte
Python Fortgeschrittene Konzepte
Einführung in das Testen in Python
In unserem Abschnitt Fehlerbehandlung haben wir untersucht, wie sowohl Syntaxfehler als auch Laufzeitfehler verwaltet werden können, aber wir sind nicht auf die Behandlung von logischen Fehlern eingegangen. In diesem Abschnitt werden wir zwei Arten von Tests erkunden, die für die Validierung der Logik unserer Anwendungen unerlässlich sind: manuelle und automatisierte Tests.
Tests werden im Allgemeinen in diese zwei Kategorien unterteilt. Manuelle Tests beinhalten, dass menschliche Tester Tests ausführen, indem sie mit der Anwendung interagieren und die Korrektheit ihrer Funktionen gemäß den Anforderungen überprüfen. Diese Art von Tests ist hilfreich, kann jedoch zeitaufwändig und anfällig für menschliche Fehler sein.
Automatisierte Tests hingegen verwenden Skripte und Tools, um Tests automatisch durchzuführen, ohne direkte menschliche Intervention, und stellen sicher, dass sich die Anwendung wie erwartet verhält. Dies beschleunigt nicht nur den Testprozess, sondern erhöht auch dessen Genauigkeit und Konsistenz.
Einführung in die testgetriebene Entwicklung (TDD)
Eine Schlüsselmethodik im automatisierten Testen ist die testgetriebene Entwicklung (TDD). TDD ist ein innovativer Entwicklungsprozess, bei dem Tests vor dem eigentlichen Code geschrieben werden. Der Prozess folgt einem einfachen Zyklus: einen Test schreiben, den Test ausführen (der zunächst fehlschlagen sollte), die minimale Menge an Code schreiben, um den Test zu bestehen, und dann den Code umstrukturieren, um den Standards von Sauberkeit und Effizienz zu entsprechen.
Überblick über Unittest- und Pytest-Frameworks
Python bietet mehrere Frameworks zum Schreiben und Ausführen von Tests, wobei Unittest und Pytest zwei der beliebtesten sind.
Unittest
Unittest ist Pythons eingebautes Test-Framework. Unittest ist klassenbasiert und erfordert, dass Sie Ihre Tests in Klassen als Unterklassen von unittest.TestCase
organisieren.
Pytest
Pytest ist ein leistungsstarkes Drittanbieter-Test-Framework, das einfachere Testfälle für sowohl einfache als auch komplexe Testszenarien unterstützt. Im Gegensatz zu Unittest erlaubt Pytest das Schreiben von Testfunktionen, ohne sie in Klassen einwickeln zu müssen.
Testen einer Durchschnittsberechnungsfunktion
Betrachten wir eine einfache Funktion, die den Durchschnitt von zwei Zahlen berechnet, und sehen wir, wie sie sowohl mit Unittest als auch mit Pytest getestet werden kann.
Zu testende Funktion:
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
Testen mit Unittest
Testen mit pytest
Während Unittest hervorragend für Entwickler ist, die mit dem xUnit-Format vertraut sind und einen strukturierten, OOP-Ansatz für Tests bevorzugen, ist Pytest für diejenigen geeignet, die mehr Flexibilität und Einfachheit suchen, zusammen mit leistungsstarken Funktionen für komplexe Tests, die nicht so leicht mit Unittest zu bewältigen sind.
Bis zum nächsten Kapitel!
Danke für Ihr Feedback!