Unit-Tests in Python mit pytest: Ein umfassender Leitfaden

Master Unit-Tests und TDD mit pytest

Lernen Sie, wie Sie Unit-Tests in Python mit pytest effektiv durchführen können. Dieses umfassende Handbuch behandelt die Grundlagen von pytest, Beispiele aus der Praxis und Praktiken der testgetriebenen Entwicklung (TDD), um Ihnen zu helfen, robusten, wartbaren Code zu schreiben.

Programmierung
Autor:in
Zugehörigkeit
Veröffentlichungsdatum

8. Februar 2024

Geändert

29. April 2025

Schlüsselwörter

pytest-Tutorial, Unit-Tests in Python, Python TDD, pytest Beispiele, Testgetriebene Entwicklung Python

Einführung

Unit-Tests sind ein wesentlicher Bestandteil der Entwicklung robuster, wartbarer Software. Durch das Schreiben von Tests für einzelne Codeeinheiten stellen Sie sicher, dass sich Ihre Funktionen wie erwartet verhalten und können Fehler frühzeitig im Entwicklungsprozess erkennen. In diesem Handbuch stellen wir Ihnen pytest vor - ein leistungsfähiges Test-Framework für Python - und zeigen Ihnen, wie Sie Tests schreiben, testgetriebene Entwicklung (TDD) betreiben und Beispiele aus der Praxis in Ihren Arbeitsablauf einbauen.



Warum Unit-Tests und TDD?

Testen hilft Ihnen, Fehler frühzeitig zu erkennen und gibt Ihnen die Sicherheit, den Code zu überarbeiten, ohne die Funktionalität zu beeinträchtigen. Die testgetriebene Entwicklung (TDD) geht noch einen Schritt weiter, indem sie Tests vor dem eigentlichen Code schreibt, die Ihr Design leiten und eine robuste Codebasis sicherstellen.

Erste Schritte mit pytest

Installieren von pytest

Um zu beginnen, installiere pytest mit pip:

pip install pytest

Schreiben Sie Ihren ersten Test

Erstellen wir eine einfache Funktion und schreiben wir einen Test für sie. Angenommen, wir haben eine add Funktion:

def add(a, b):
    return a + b

Erstellen Sie nun einen Test für diese Funktion:

def test_add():
    assert add(2, 3) == 5
    assert add(-1, 1) == 0

Um den Test auszuführen, führen Sie pytest in Ihrem Terminal aus.

Testgetriebene Entwicklung (TDD) mit pytest

TDD beinhaltet das Schreiben von Tests vor dem Schreiben des Codes. Hier ist ein einfacher Arbeitsablauf:

  1. Schreiben Sie einen Test, der das gewünschte Verhalten einer Funktion definiert.
  2. Führen Sie den Test aus, um zu sehen, ob er fehlschlägt.
  3. Schreiben Sie den minimal notwendigen Code, um den Test zu bestehen.
  4. Refactoring des Codes, wenn nötig, und Wiederholung.

Beispiel: TDD Arbeitsablauf

Angenommen, wir brauchen eine Funktion multiply, die zwei Zahlen multipliziert. Wir beginnen mit dem Schreiben eines Tests:

def test_multiply():
    assert multiply(3, 4) == 12
    assert multiply(-2, 5) == -10

Starten Sie pytest, und Sie werden sehen, dass der Test fehlschlägt, weil multiply nicht definiert ist. Implementieren Sie nun die Funktion:

def multiply(a, b):
    return a * b

Führen Sie pytest erneut aus, um sicherzustellen, dass der Test erfolgreich ist.

Erweiterte pytest-Funktionen

Parametrisierte Tests

pytest ermöglicht es Ihnen, eine Testfunktion mit verschiedenen Eingabesätzen auszuführen, indem Sie den @pytest.mark.parametrize Dekorator verwenden.

#| label: parameterized-tests, code-fold: true
import pytest

@pytest.mark.parametrize("a,b,expected", [
    (2, 3, 6),
    (5, 5, 25),
    (-1, 8, -8),
])
def test_multiply_param(a, b, expected):
    assert multiply(a, b) == expected

Fixtures in pytest

Fixtures in pytest ermöglichen es Ihnen, Daten oder Zustände vor der Ausführung von Tests einzurichten und danach aufzuräumen.

import pytest

@pytest.fixture
def sample_data():
    return [1, 2, 3, 4, 5]

def test_sum(sample_data):
    assert sum(sample_data) == 15

Best Practices für Unit-Tests

  • Schreiben Sie Tests für jede Funktion:
    Stellen Sie sicher, dass jede Einheit Ihres Codes über entsprechende Tests verfügt.
  • Tests unabhängig halten:
    Tests sollten nicht voneinander abhängen; jeder Test sollte seinen eigenen Kontext aufbauen.
  • Beschreibende Testnamen verwenden:
    Benennen Sie Ihre Testfunktionen klar und deutlich, damit Fehler leicht zu diagnostizieren sind.
  • Fixtures und Parametrisierung nutzen:
    Nutzen Sie diese Funktionen, um sauberere und effizientere Tests zu schreiben.
  • Tests häufig ausführen:
    Integrieren Sie Tests in Ihren Entwicklungsprozess, um Probleme frühzeitig zu erkennen.

Schlussfolgerung

Durch den Einsatz von pytest und TDD-Praktiken können Sie eine robuste Testsuite erstellen, die die Codequalität und -zuverlässigkeit verbessert. Dieser Leitfaden führt Sie in die Grundlagen des Schreibens von Tests, das Erstellen von Fixtures, das Parametrisieren von Tests und das Befolgen von TDD-Workflows in Python ein. Mit diesen Tools sind Sie besser für die Wartung und Skalierung Ihrer Projekte gerüstet.

Weiterführende Literatur

Viel Spaß beim Testen und bei der Entwicklung zuverlässiger Python-Anwendungen mit pytest!

Weitere Artikel erkunden

Hinweis

Hier finden Sie weitere Artikel aus derselben Kategorie, die Ihnen helfen, tiefer in das Thema einzutauchen.

placeholder

placeholder
Keine Treffer
Zurück nach oben

Wiederverwendung

Zitat

Mit BibTeX zitieren:
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Unit-Tests in Python mit pytest: Ein umfassender Leitfaden},
  date = {2024-02-08},
  url = {https://www.datanovia.com/de/learn/programming/python/tools/pytest-unit-testing.html},
  langid = {de}
}
Bitte zitieren Sie diese Arbeit als:
Kassambara, Alboukadel. 2024. “Unit-Tests in Python mit pytest: Ein umfassender Leitfaden.” February 8, 2024. https://www.datanovia.com/de/learn/programming/python/tools/pytest-unit-testing.html.