Pytest: Das ultimative Python-Testing-Handbuch
Einführung in Pytest
Testing ist ein entscheidender Bestandteil der Softwareentwicklung. Ohne qualitativ hochwertige Tests ist es schwierig, die Zuverlässigkeit des Codes und seinen stabilen Betrieb bei Änderungen zu gewährleisten. Pytest ist ein modernes, leistungsstarkes und benutzerfreundliches Framework für automatisiertes Testen in Python, das das Schreiben und Ausführen von Tests erheblich vereinfacht.
Pytest hat sich in der Entwickler-Community aufgrund seiner prägnanten Syntax, umfangreichen Erweiterungsmöglichkeiten und dem leistungsstarken Fixture-System großer Beliebtheit erfreut. Es übertrifft das Standardmodul unittest in puncto Benutzerfreundlichkeit und Testentwicklungsgeschwindigkeit deutlich.
Installation und Einrichtung von Pytest
Installation via pip
pip install pytest
Installation prüfen
pytest --version
Erster einfacher Test
Erstellen Sie eine Datei test_example.py:
def test_addition():
assert 2 + 2 == 4
def test_string_operations():
text = "Hallo, Welt!"
assert "Hallo" in text
assert len(text) == 13
Tests ausführen
pytest
Pytest erkennt automatisch alle Testdateien und -funktionen, die den Namenskonventionen folgen.
Struktur und Organisation von Tests
Namenskonventionen
Pytest verwendet die folgenden Konventionen zur automatischen Erkennung von Tests:
- Testdateien:
test_*.pyoder*_test.py - Testfunktionen:
def test_...() - Testklassen:
class Test...(ohne__init__-Methode) - Testmethoden in Klassen:
def test_...()
Teststruktur organisieren
projekt/
├── src/
│ ├── rechner.py
│ └── utils.py
├── tests/
│ ├── test_rechner.py
│ ├── test_utils.py
│ └── conftest.py
└── pytest.ini
Tests mit verschiedenen Parametern ausführen
# Alle Tests ausführen
pytest
# Tests in einem bestimmten Verzeichnis ausführen
pytest tests/
# Bestimmte Datei ausführen
pytest test_rechner.py
# Bestimmten Test ausführen
pytest test_rechner.py::test_add
# Tests in einer Klasse ausführen
pytest test_rechner.py::TestRechner
# Bestimmte Methode einer Klasse ausführen
pytest test_rechner.py::TestRechner::test_multiplizieren
Grundlagen des Testschreibens
Verwendung von assert für Prüfungen
Pytest verwendet den standardmäßigen Python-Operator assert zur Überprüfung von Bedingungen:
def test_basic_assertions():
# Gleichheit prüfen
assert 2 + 2 == 4
# Ungleichheit prüfen
assert 3 * 3 != 8
# Enthaltensein prüfen
assert "Python" in "Python testen"
# Typ prüfen
assert isinstance(42, int)
# Wahrheitswert prüfen
assert bool([1, 2, 3])
# Falschwert prüfen
assert not bool([])
Ausnahmen testen
import pytest
def dividieren(a, b):
if b == 0:
raise ValueError("Division durch Null ist nicht erlaubt")
return a / b
def test_division_durch_null():
with pytest.raises(ValueError):
dividieren(10, 0)
def test_ausnahmemeldung():
with pytest.raises(ValueError, match="Division durch Null"):
dividieren(10, 0)
def test_ausnahmetyp():
with pytest.raises(ZeroDivisionError):
1 / 0
Tests in Klassen organisieren
class TestRechner:
def test_addition(self):
assert 2 + 3 == 5
def test_subtraktion(self):
assert 10 - 4 == 6
Auch in der Bibliothek
CLI-Frameworks für Go (Golang): Ein vollständiger Überblick über Tools zur Erstellung von Konsolenanwendungen
ORM für TypeScript: Vergleich von TypeORM, Prisma und MikroORM
Mapster C# (.NET): Komplettguide mit Beispielen
Arbeit mit XML in Kotlin: Bibliotheken und Werkzeuge für Parsing und Erstellung