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
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen