Verwendung 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.
Swipe to start coding
Schreiben Sie pytest-Testfunktionen, um die folgenden Bedingungen zu validieren:
- Überprüfen, dass der Aufruf von
is_even(4)Truezurückgibt. - Überprüfen, dass der Aufruf von
add(2, 3)gleich5ist. - Überprüfen, dass der Aufruf von
multiply(3, 7)21zurückgibt, und geben Sie eine detaillierte Fehlermeldung aus, falls die Assertion fehlschlägt. - Überprüfen, dass der Aufruf von
divide(10, 0)einenZeroDivisionErrorauslöst. - Überprüfen, dass der String
'grape'in derfruit_listenthalten 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
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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?
Awesome!
Completion rate improved to 3.13
Verwendung 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.
Swipe to start coding
Schreiben Sie pytest-Testfunktionen, um die folgenden Bedingungen zu validieren:
- Überprüfen, dass der Aufruf von
is_even(4)Truezurückgibt. - Überprüfen, dass der Aufruf von
add(2, 3)gleich5ist. - Überprüfen, dass der Aufruf von
multiply(3, 7)21zurückgibt, und geben Sie eine detaillierte Fehlermeldung aus, falls die Assertion fehlschlägt. - Überprüfen, dass der Aufruf von
divide(10, 0)einenZeroDivisionErrorauslöst. - Überprüfen, dass der String
'grape'in derfruit_listenthalten 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
Danke für Ihr Feedback!
single