Pytest – Python-Testing für Einsteiger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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_*.py oder *_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

Empfehlungen