Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Organisieren und Ausführen von Tests mit Pytest | Testing with unittest and pytest
Python Fortgeschrittene Konzepte

Organisieren und Ausführen von Tests mit Pytest

Swipe um das Menü anzuzeigen

Wenn Sie sauberen, ausdrucksstarken und leicht wartbaren Testcode in Python schreiben möchten, ist pytest eine beliebte Wahl. Im Gegensatz zum integrierten unittest-Framework, das einer starren, klassenbasierten Struktur folgt und spezielle Assertion-Methoden wie self.assertEqual erfordert, ermöglicht pytest die Verwendung von Standard-Python-assert-Anweisungen innerhalb einfacher Funktionen. Dadurch wird der Boilerplate-Code erheblich reduziert und Ihre Tests werden übersichtlicher, da Sie die Logik nicht mehr in komplexe Klassenhierarchien einbetten oder zahlreiche frameworkspezifische Assertion-Namen auswendig lernen müssen, nur um ein einfaches Ergebnis zu überprüfen.

Eine der leistungsstärksten Funktionen von pytest ist das Test-Discovery-System. Wenn Sie einfach pytest im Projektverzeichnis ausführen, findet das Tool automatisch alle Dateien, die dem Muster test_*.py oder *_test.py entsprechen, und führt alle Funktionen in diesen Dateien aus, die mit test_ beginnen. Das bedeutet, dass Sie nicht manuell angeben müssen, welche Tests ausgeführt werden sollen – pytest übernimmt das für Sie.

Ein weiterer wichtiger Vorteil ist die Verwendung von Fixtures. Fixtures übernehmen die Vorbereitung und das Aufräumen von Ressourcen, die Ihre Tests benötigen, wie temporäre Dateien oder Datenbankverbindungen, auf eine Weise, die leicht wiederverwendbar ist. Sie dekorieren einfach eine Funktion mit @pytest.fixture und fordern sie dann als Eingabe in Ihren Testfunktionen an. Das hält Ihren Code modular und verhindert, dass Sie dieselbe Setup-Logik mehrfach schreiben müssen.

Um mit pytest zu beginnen, müssen Sie es zunächst installieren. Verwenden Sie dazu den folgenden Befehl im Terminal:

pip install pytest

Damit wird die neueste Version von pytest heruntergeladen und installiert, sodass Sie sofort mit dem Schreiben und Ausführen Ihrer Tests beginnen können.

Hier folgt eine praktische Demonstration, wie Sie damit funktionsbasierte Tests schreiben und wiederverwendbare Fixtures definieren können.

import pytest

# A simple function to test
def add(a, b):
    return a + b

# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
    return (3, 5)

# Test function using the fixture
def test_add_with_fixture(sample_numbers):
    a, b = sample_numbers
    result = add(a, b)
    assert result == 8

# Another simple test function
def test_add_negative_numbers():
    assert add(-2, -4) == -6
question mark

Was ist ein wesentlicher Vorteil der Verwendung von pytest im Vergleich zu unittest?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 5. Kapitel 6
some-alt