0Pricing
Python Academy · Lektion

Ihre ersten pytest-Tests schreiben

Verstehen Sie das Auffinden von Tests, assert-Anweisungen und den Testaufbau.

Ihre ersten pytest-Tests schreiben ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

pytest installieren

Installieren Sie pytest mit pip. Es ist keine zwingende Konfiguration erforderlich — pytest erkennt Tests automatisch.

# pip install pytest

# Run all tests
# pytest

# Run a specific file
# pytest test_math.py

Eine einfache Testfunktion

pytest sammelt jede Funktion, die mit test_ beginnt. Verwenden Sie einfache assert-Anweisungen — pytest überarbeitet sie für eine detaillierte Ausgabe.

# test_math.py
def add(a, b):
    return a + b

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

def test_add_negative():
    assert add(-1, 1) == 0

Testdateien und Erkennung

pytest erkennt Testdateien namens test_*.py oder *_test.py und sammelt Funktionen namens test_* oder Klassen namens Test*.

tests/
    test_utils.py
    test_models.py
    conftest.py   # shared fixtures

Tests in Klassen gruppieren

Gruppieren Sie zusammengehörige Tests in einer Klasse mit dem Präfix Test. unittest.TestCase ist nicht erforderlich.

class TestCalculator:
    def test_add(self):
        assert 1 + 1 == 2

    def test_multiply(self):
        assert 3 * 4 == 12

Ausnahmen testen

Verwenden Sie pytest.raises als Context Manager, um zu überprüfen, dass bestimmte Ausnahmen ausgelöst werden.

import pytest

def divide(a, b):
    if b == 0:
        raise ZeroDivisionError("cannot divide by zero")
    return a / b

def test_divide_by_zero():
    with pytest.raises(ZeroDivisionError, match="cannot divide"):
        divide(10, 0)

Das Flag -v

Führen Sie pytest mit -v (ausführlich) aus, um den Namen jedes Tests und seinen Erfolgs- oder Fehlerstatus anzuzeigen.

# pytest -v
# test_math.py::test_add PASSED
# test_math.py::test_add_negative PASSED

# Show print output too:
# pytest -v -s

Tests überspringen

Verwenden Sie @pytest.mark.skip oder @pytest.mark.skipif, um Tests bedingt zu überspringen.

import pytest, sys

@pytest.mark.skip(reason="not implemented yet")
def test_future_feature():
    assert False

@pytest.mark.skipif(sys.platform == "win32", reason="Unix only")
def test_unix_only():
    assert True

Tests als erwartete Fehler markieren

@pytest.mark.xfail markiert einen Test, bei dem Sie einen Fehler erwarten. Der Test gilt als erfolgreich, wenn er fehlschlägt, und es wird eine Warnung ausgegeben, wenn er unerwartet erfolgreich ist.

import pytest

@pytest.mark.xfail(reason="known bug #42")
def test_buggy():
    assert 1 == 2  # will fail, but that's expected

Überarbeitung von assert

pytest überarbeitet assert-Anweisungen, um die Werte anzuzeigen, die den Fehler verursacht haben — deutlich hilfreicher als ein einfacher AssertionError.

def test_list_equal():
    result = [1, 2, 4]
    expected = [1, 2, 3]
    assert result == expected
# AssertionError:
#   assert [1, 2, 4] == [1, 2, 3]
#   At index 2 diff: 4 != 3

conftest.py

conftest.py wird von pytest automatisch geladen. Legen Sie gemeinsame Fixtures und Plugins hier ab, ohne sie explizit importieren zu müssen.

# conftest.py
import pytest

@pytest.fixture
def sample_data():
    return {"key": "value"}

# Any test file in the same dir can use sample_data as a parameter

Teilgruppen von Tests ausführen

Verwenden Sie -k, um Tests auszuführen, die einem Schlüsselwortausdruck entsprechen.

# Run tests containing "add"
# pytest -k "add"

# Run tests NOT containing "slow"
# pytest -k "not slow"

# Run a specific test
# pytest test_math.py::test_add

Kurztest

Mit welchem Präfix muss der Name einer pytest-Testfunktion beginnen, damit sie automatisch erkannt wird?

Zusammenfassung

pytest benötigt keinen Boilerplate-Code: Benennen Sie Dateien mit test_*.py, Funktionen mit test_* und verwenden Sie einfache assert-Anweisungen. Verwenden Sie pytest.raises für Ausnahmen, -v für ausführliche Ausgaben und conftest.py für gemeinsame Fixtures.

Häufig gestellte Fragen

Ist die Lektion „Ihre ersten pytest-Tests schreiben“ kostenlos?

Ja — der vollständige Text von „Ihre ersten pytest-Tests schreiben“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Ihre ersten pytest-Tests schreiben“?

Verstehen Sie das Auffinden von Tests, assert-Anweisungen und den Testaufbau. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Ihre ersten pytest-Tests schreiben“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ihre ersten pytest-Tests schreiben
  2. Fixtures und Setup/Teardown
  3. Parametrisierung und Testabdeckung
  4. Mocking mit unittest.mock
← Zurück zu Python Academy