Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verwendung der Assert-Anweisung in Pytest: Validierung von Testbedingungen | Pytest Framework
Quizzes & Challenges
Quizzes
Challenges
/
Python Fortgeschrittene Konzepte

bookVerwendung der Assert-Anweisung in Pytest: Validierung von Testbedingungen

Die assert-Anweisung wird verwendet, um zu überprüfen, ob eine Bedingung True ist. Ist die Bedingung False, schlägt der Test fehl. Pytest erweitert das grundlegende assert, indem es bei einem Fehlschlag der Assertion detaillierte Ausgaben liefert, was das Verständnis des Fehlers erleichtert.

Einfache Assertions:

Überprüfung, dass die Bedingung als True ausgewertet wird. Wird sie als False ausgewertet, löst Pytest einen AssertionError aus und markiert den Test als fehlgeschlagen.

assert condition

Im folgenden Beispiel sollte word.isupper() True zurückgeben, wenn word in Großbuchstaben ist. Andernfalls schlägt der Test fehl.

def test_is_uppercase():
    word = "HELLO"
    assert word.isupper()

Vergleichende Assertions:

assert actual == expected

Überprüfung, ob das Ergebnis einer Operation (actual) dem erwarteten Wert entspricht.

def test_addition():
    assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"

Hier wird die Funktion add getestet, um sicherzustellen, dass sie zwei Zahlen korrekt addiert. Die Nachricht nach dem Komma liefert zusätzlichen Kontext, falls der Test fehlschlägt.

Assertions mit detailliertem Feedback:

assert condition, message

Bereitstellung einer benutzerdefinierten Fehlermeldung, die angezeigt wird, wenn die Assertion fehlschlägt, um mehr Einblick in das Problem zu geben.

def test_multiply():
    result = multiply(2, 5)
    assert result == 10, f"Expected 10, got {result}"

Diese Assertion prüft, ob die Funktion multiply beim Multiplizieren von 10 und 2 den Wert 5 zurückgibt. Die benutzerdefinierte Nachricht verdeutlicht das erwartete Ergebnis im Vergleich zum tatsächlichen Resultat, falls der Test fehlschlägt.

Assertions für Ausnahmen:

pytest.raises(ExceptionType)

Überprüfung, dass ein bestimmter Ausnahmefehler von einem Codeblock ausgelöst wird.

import pytest

def divide(x, y):
    return x / y

def test_divide_zero():
    with pytest.raises(ZeroDivisionError):
        divide(10, 0)

Dieser Test stellt sicher, dass eine Division durch Null einen ZeroDivisionError auslöst. Dies ist wesentlich für das Testen der Fehlerbehandlung im Code.

Erweiterte Assertions:

Assertions können verwendet werden, um komplexere Bedingungen zu überprüfen, wie z. B. Inhalte von Listen, Dictionaries oder differenzierte Zustände in der Anwendung.

def test_inventory():
    inventory = ["apple", "banana", "cherry"]
    assert "banana" in inventory, "Banana should be in the inventory"

Dieser Test prüft das Vorhandensein eines Elements in einer Liste und liefert eine klare Rückmeldung, falls das Element fehlt.

Aufgabe

Swipe to start coding

Schreiben Sie pytest-Testfunktionen, um die folgenden Bedingungen zu validieren:

  • Überprüfen, dass der Aufruf von is_even(4) True zurückgibt.
  • Überprüfen, dass der Aufruf von add(2, 3) gleich 5 ist.
  • Überprüfen, dass der Aufruf von multiply(3, 7) 21 zurückgibt, und geben Sie eine detaillierte Fehlermeldung aus, falls die Assertion fehlschlägt.
  • Überprüfen, dass der Aufruf von divide(10, 0) einen ZeroDivisionError auslöst.
  • Überprüfen, dass der String 'grape' in der fruit_list enthalten ist.

Schreiben Sie jeden Test als separate Funktion mit dem Präfix test_. Verwenden Sie assert-Anweisungen zur Validierung. Für die Ausnahme verwenden Sie den pytest.raises-Kontextmanager. Für die detaillierte Fehlermeldung verwenden Sie ein f-String, der das tatsächliche Ergebnis im Fehlerfall anzeigt.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

Suggested prompts:

Can you explain how pytest improves the output of failed assertions?

What are some best practices for writing custom error messages in assertions?

How do I use pytest to test for exceptions in my code?

close

bookVerwendung der Assert-Anweisung in Pytest: Validierung von Testbedingungen

Swipe um das Menü anzuzeigen

Die assert-Anweisung wird verwendet, um zu überprüfen, ob eine Bedingung True ist. Ist die Bedingung False, schlägt der Test fehl. Pytest erweitert das grundlegende assert, indem es bei einem Fehlschlag der Assertion detaillierte Ausgaben liefert, was das Verständnis des Fehlers erleichtert.

Einfache Assertions:

Überprüfung, dass die Bedingung als True ausgewertet wird. Wird sie als False ausgewertet, löst Pytest einen AssertionError aus und markiert den Test als fehlgeschlagen.

assert condition

Im folgenden Beispiel sollte word.isupper() True zurückgeben, wenn word in Großbuchstaben ist. Andernfalls schlägt der Test fehl.

def test_is_uppercase():
    word = "HELLO"
    assert word.isupper()

Vergleichende Assertions:

assert actual == expected

Überprüfung, ob das Ergebnis einer Operation (actual) dem erwarteten Wert entspricht.

def test_addition():
    assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"

Hier wird die Funktion add getestet, um sicherzustellen, dass sie zwei Zahlen korrekt addiert. Die Nachricht nach dem Komma liefert zusätzlichen Kontext, falls der Test fehlschlägt.

Assertions mit detailliertem Feedback:

assert condition, message

Bereitstellung einer benutzerdefinierten Fehlermeldung, die angezeigt wird, wenn die Assertion fehlschlägt, um mehr Einblick in das Problem zu geben.

def test_multiply():
    result = multiply(2, 5)
    assert result == 10, f"Expected 10, got {result}"

Diese Assertion prüft, ob die Funktion multiply beim Multiplizieren von 10 und 2 den Wert 5 zurückgibt. Die benutzerdefinierte Nachricht verdeutlicht das erwartete Ergebnis im Vergleich zum tatsächlichen Resultat, falls der Test fehlschlägt.

Assertions für Ausnahmen:

pytest.raises(ExceptionType)

Überprüfung, dass ein bestimmter Ausnahmefehler von einem Codeblock ausgelöst wird.

import pytest

def divide(x, y):
    return x / y

def test_divide_zero():
    with pytest.raises(ZeroDivisionError):
        divide(10, 0)

Dieser Test stellt sicher, dass eine Division durch Null einen ZeroDivisionError auslöst. Dies ist wesentlich für das Testen der Fehlerbehandlung im Code.

Erweiterte Assertions:

Assertions können verwendet werden, um komplexere Bedingungen zu überprüfen, wie z. B. Inhalte von Listen, Dictionaries oder differenzierte Zustände in der Anwendung.

def test_inventory():
    inventory = ["apple", "banana", "cherry"]
    assert "banana" in inventory, "Banana should be in the inventory"

Dieser Test prüft das Vorhandensein eines Elements in einer Liste und liefert eine klare Rückmeldung, falls das Element fehlt.

Aufgabe

Swipe to start coding

Schreiben Sie pytest-Testfunktionen, um die folgenden Bedingungen zu validieren:

  • Überprüfen, dass der Aufruf von is_even(4) True zurückgibt.
  • Überprüfen, dass der Aufruf von add(2, 3) gleich 5 ist.
  • Überprüfen, dass der Aufruf von multiply(3, 7) 21 zurückgibt, und geben Sie eine detaillierte Fehlermeldung aus, falls die Assertion fehlschlägt.
  • Überprüfen, dass der Aufruf von divide(10, 0) einen ZeroDivisionError auslöst.
  • Überprüfen, dass der String 'grape' in der fruit_list enthalten ist.

Schreiben Sie jeden Test als separate Funktion mit dem Präfix test_. Verwenden Sie assert-Anweisungen zur Validierung. Für die Ausnahme verwenden Sie den pytest.raises-Kontextmanager. Für die detaillierte Fehlermeldung verwenden Sie ein f-String, der das tatsächliche Ergebnis im Fehlerfall anzeigt.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3
single

single

some-alt