Python Testing mit pytest
Python-Code systematisch und wartbar testen
01 Intro
Automatisierte Tests gehören zu professioneller Softwareentwicklung. pytest
bietet dafür einen schlanken Einstieg, unterstützt aber ebenso umfangreiche
Testsuiten mit Fixtures, Parametrisierung, Mocking und einer klaren
Strukturierung der Tests.
Der Kurs vermittelt den praktischen Einsatz von pytest von den ersten Unit
Tests bis zum Aufbau wartbarer Testsuiten. Im Mittelpunkt stehen
aussagekräftige Tests, sinnvolle Teststrukturen und der gezielte Umgang mit
Abhängigkeiten.
Kurs-ID
PY-004
Dauer
3 Tage
Format
Präsenz · Live Online · Inhouse
Vorkenntnisse
Sichere Python-Grundkenntnisse
02 Trainingsprogramm
Inhalte
Einstieg in pytest
- Aufgaben automatisierter Tests
- Installation und Projektaufbau
- Test Discovery
- Aufbau eines pytest-Tests
- Assertions
- Testergebnisse verstehen
Gute Tests schreiben
- Arrange – Act – Assert
- kleine und fokussierte Tests
- aussagekräftige Testnamen
- positive und negative Testfälle
- Exceptions testen
- typische Fehler in Unit Tests
Fixtures
- wiederverwendbare Testvorbereitung
- Fixture Injection
- Setup und Teardown
- Fixture Scopes
- Abhängigkeiten zwischen Fixtures
- eingebaute pytest-Fixtures
Parametrisierung
- @pytest.mark.parametrize
- mehrere Testdaten
- Kombination von Parametern
- lesbare Test-IDs
- parametrisierte Fixtures
- datengetriebene Tests
Tests strukturieren
- Tests nach Modulen und Funktionen organisieren
- Testklassen sinnvoll einsetzen
- gemeinsame Fixtures
- Marker
- Tests auswählen und gruppieren
- Struktur größerer Testsuiten
Abhängigkeiten isolieren
- warum Abhängigkeiten Tests erschweren
- Test Doubles
- Stubs, Fakes und Mocks
- unittest.mock
- Mock und MagicMock
- wann Mocking sinnvoll ist – und wann nicht
Dateien, Daten und externe Ressourcen testen
- temporäre Dateien und Verzeichnisse
- tmp_path
- Konfigurationen testen
- Umgebungsvariablen
- Testdaten bereitstellen
- externe Ressourcen kontrolliert einbinden
Fehler und Exceptions testen
- erwartete Exceptions
- pytest.raises
- Fehlermeldungen überprüfen
- Warnings testen
- Fehlerpfade gezielt abdecken
Testqualität und Coverage
- was Code Coverage aussagt
- was Coverage nicht aussagt
- Coverage mit pytest
- fehlende Testfälle erkennen
- Branch Coverage
- Coverage als Hilfsmittel statt Zielgröße
Tests diagnostizieren
- ausführliche pytest-Ausgaben
- fehlgeschlagene Assertions analysieren
- Output und Logging untersuchen
- Debugging fehlgeschlagener Tests
- einzelne Tests gezielt ausführen
- typische Ursachen instabiler Tests
Wartbare Testsuiten
- Duplikation in Tests vermeiden
- Testhilfsfunktionen und Fixtures
- Testdaten sinnvoll organisieren
- Tests voneinander unabhängig halten
- schnelle und langsame Tests unterscheiden
- Tests als ausführbare Dokumentation
pytest im Entwicklungsprozess
- Tests lokal ausführen
- automatisierte Testläufe
- Exit Codes
- Reports und Testergebnisse
- grundlegende Einbindung in CI/CD
- sinnvolle Testauswahl für unterschiedliche Teststufen
03 Durchführung
Rahmen und Organisation
Dauer
3 Tage
Durchführung
Präsenz oder Live Online, vorzugsweise als Inhouse-Schulung
Schwerpunkt
Inhouse-Schulungen für Unternehmen und Teams
Sprache
Deutsch, englische Fachbegriffe und Dokumentation
Unterlagen
Kursunterlagen, Beispiele und Übungsaufgaben
Technik
Eigener Rechner mit aktueller Python-Version und Entwicklungsumgebung
Inhouse-Schulungen
Die Schwerpunkte können an vorhandene Kenntnisse, eingesetzte
Technologien und konkrete Anforderungen des Teams angepasst werden.
04 Zielgruppe
Für wen ist der Kurs gedacht?
Der Kurs richtet sich an Python-Entwicklerinnen und -Entwickler, die ihren Code automatisiert testen und mit pytest zuverlässige und wartbare Testsuiten aufbauen möchten.
Er eignet sich sowohl für Teilnehmer, die bisher nur einzelne Tests geschrieben haben, als auch für Entwickler, die pytest bereits einsetzen und ihre Tests systematischer strukturieren möchten.
Die Teilnehmer sollten mit folgenden Themen sicher umgehen können:
- grundlegende Python-Syntax
- Datenstrukturen
- Funktionen
- Module und Packages
- Exceptions
- grundlegende objektorientierte Programmierung
Testerfahrung
Erfahrung mit automatisierten Tests oder pytest ist nicht erforderlich.
05 Lernziele
Was Sie nach dem Kurs können
Nach dem Kurs können die Teilnehmer:
- automatisierte Tests mit pytest erstellen und ausführen
- aussagekräftige und fokussierte Testfälle entwickeln
- Fixtures zur Vorbereitung und Wiederverwendung von Testkontexten einsetzen
- Tests und Fixtures parametrisieren
- Testsuiten sinnvoll strukturieren
- externe Abhängigkeiten mit geeigneten Test Doubles isolieren
- Mocking und monkeypatch gezielt einsetzen
- Fehler- und Ausnahmefälle systematisch testen
- Coverage-Ergebnisse sinnvoll interpretieren
- fehlgeschlagene Tests systematisch analysieren
- wartbare und voneinander unabhängige Tests entwickeln
- pytest in einen automatisierten Entwicklungsprozess integrieren
06 FAQ
Häufige Fragen
Ist der Kurs nur für Unit Tests gedacht?
Nein. Unit Tests bilden einen Schwerpunkt, pytest eignet sich aber ebenso für Integrations- und andere automatisierte Tests. Der Kurs behandelt deshalb auch die Strukturierung unterschiedlicher Testebenen.
Muss ich pytest bereits kennen?
Nein. Der Kurs beginnt mit den grundlegenden Mechanismen und führt anschließend zu Fixtures, Parametrisierung, Mocking und größeren Testsuiten.
Wird auch Mocking behandelt?
Ja. Dabei geht es nicht nur um die Bedienung von unittest.mock, sondern auch darum, wann ein Mock sinnvoll ist und wann andere Test Doubles oder echte Komponenten die bessere Lösung sind.
Wird Test Driven Development behandelt?
TDD kann anhand einzelner Übungen demonstriert werden, ist aber nicht der Schwerpunkt des Kurses. Im Mittelpunkt steht der systematische Einsatz von pytest.
Wird CI/CD behandelt?
Die grundlegende Integration automatisierter pytest-Läufe wird behandelt. Aufbau und Architektur vollständiger CI/CD-Pipelines sind nicht Schwerpunkt dieses Kurses.
Kann der Kurs an unseren vorhandenen Python-Code angepasst werden?
Ja. Bei Inhouse-Schulungen können Beispiele, Übungen und Schwerpunkte an die vorhandene Codebasis, Teststrategie und Entwicklungsumgebung angepasst werden.