Testen und TDD in Python- Unit-Tests, Mocking und Best Practices
Testen und TDD in Python: Unit-Tests, Mocking und Best Practices
Ein praxisorientierter Leitfaden zur automatisierten Qualitätssicherung mit unittest, pytest und testgetriebener Entwicklung
Inhaltsverzeichnis
Kapitel 1: Warum testen? Grundlagen automatisierter Tests
- Unterschied zwischen manuellen und automatisierten Tests
- Vorteile von Unit-Tests in der Softwareentwicklung
- Das Testpyramiden-Modell
- Einführung in Test-Driven Development (TDD)
Kapitel 2: Erste Schritte mit unittest
- Aufbau von Testklassen
- Wichtige Assertions (assertEqual, assertTrue, assertRaises etc.)
- Tests ausführen mit CLI und IDE
- Mini-Projekt: Einfache Funktion mit Tests absichern
Kapitel 3: Teststruktur und Testabdeckung verbessern
- setUp() und tearDown() für gemeinsame Vorbereitung
- Testmodule und Namenskonventionen
- Testabdeckung messen mit coverage.py
- Mini-Projekt: Code refaktorisieren und Abdeckung prüfen
Kapitel 4: Einführung in pytest
- pytest vs. unittest
- Fixtures, parametrisiertes Testen
- Plugins und Features
- Mini-Projekt: Datentransformation mit pytest absichern
Kapitel 5: Testgetriebene Entwicklung in der Praxis
- Red → Green → Refactor: der TDD-Zyklus
- Anforderungen in Tests übersetzen
- Praktisches Beispiel: Entwicklung eines Taschenrechners per TDD
- Tipps für langfristig sauberen Code
Kapitel 6: Mocking und Isolation von Abhängigkeiten
- Warum Mocks?
- unittest.mock verwenden: patch(), MagicMock, Mock()
- Methodenaufrufe und Rückgabewerte simulieren
- Mini-Projekt: Externe API mit Mock ersetzen
Kapitel 7: Fehlerbehandlung und Testszenarien
- Tests für Ausnahmen, ungültige Eingaben, Sonderfälle
- Randfälle gezielt testen
- Mini-Projekt: Benutzerregistrierung mit robuster Prüfung
Kapitel 8: Integrationstests und systemübergreifendes Testen
- Datenbanktests, Dateioperationen, Netzwerkverbindungen
- Testumgebung aufsetzen
- Mini-Projekt: REST-API-Tests mit requests und Testdatenbank
Kapitel 9: Testautomatisierung und CI/CD
- Tests automatisiert in Pipelines ausführen (GitHub Actions, GitLab CI, etc.)
- Fehler schneller erkennen
- Codequalität dauerhaft sichern
- Beispiel: .yml-Konfiguration für CI mit pytest
Kapitel 10: Best Practices für nachhaltiges Testen
- Lesbare, wartbare Tests schreiben
- Keine Logik im Test
- Tests als Dokumentation und Sicherheitsnetz
- Empfehlungen für kleine und große Projekte
Anhang A: Übersicht der wichtigsten unittest- und pytest-Funktionen
- Kompaktreferenz mit Syntax und Beispielen
Anhang B: Typische Testfehler und wie man sie vermeidet
- Flaky Tests, versteckte Abhängigkeiten, unklare Fehlermeldungen
- Anti-Patterns im Testcode
Anhang C: Übungsaufgaben mit Lösungen
- Unit-Test für mathematische Funktionen
- Mocking von Datei- und Netzwerkkontakt
- TDD für kleine Funktionen und Klassen
- Ausführlich kommentierte Lösungen