Het Gebruik van de Assert-Instructie in Pytest: Het Valideren van Testcondities
De assert-instructie wordt gebruikt om te verifiëren dat een conditie True is. Als de conditie False is, faalt de test. Pytest breidt de basis assert uit door gedetailleerde output te geven wanneer de bewering faalt, waardoor het eenvoudiger wordt te begrijpen wat er misging.
Eenvoudige Asserties:
Controleren dat de conditie wordt geëvalueerd als True. Als deze wordt geëvalueerd als False, geeft Pytest een AssertionError en markeert de test als mislukt.
assert condition
In het volgende voorbeeld zou word.isupper() True moeten retourneren als word in hoofdletters staat. Zo niet, dan faalt de test.
def test_is_uppercase():
word = "HELLO"
assert word.isupper()
Vergelijkende Asserties:
assert actual == expected
Verifiëren dat het resultaat van een bewerking (actual) overeenkomt met de verwachte waarde.
def test_addition():
assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"
Hier wordt de add-functie getest om te waarborgen dat deze twee getallen correct optelt. Het bericht na de komma biedt extra context als de test faalt.
Asserties met Gedetailleerde Feedback:
assert condition, message
Een aangepaste foutmelding geven die wordt weergegeven wanneer de assertie faalt, voor meer inzicht in het probleem.
def test_multiply():
result = multiply(2, 5)
assert result == 10, f"Expected 10, got {result}"
Deze assertie controleert of de functie multiply 10 retourneert bij het vermenigvuldigen van 2 en 5. Het aangepaste bericht verduidelijkt de verwachte uitkomst versus het daadwerkelijke resultaat als de test faalt.
Asserties voor Excepties:
pytest.raises(ExceptionType)
Bevestigen dat een bepaald type exceptie wordt opgegooid door een codeblok.
import pytest
def divide(x, y):
return x / y
def test_divide_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
Deze test waarborgt dat delen door nul een ZeroDivisionError veroorzaakt. Dit is essentieel voor het testen van foutafhandeling in de code.
Geavanceerde Asserties:
Gebruik asserties om complexere condities te controleren, zoals de inhoud van lijsten, dictionaries of meer genuanceerde toestanden in de applicatie.
def test_inventory():
inventory = ["apple", "banana", "cherry"]
assert "banana" in inventory, "Banana should be in the inventory"
Deze test controleert of een item aanwezig is in een lijst en geeft duidelijke feedback als het item ontbreekt.
Swipe to start coding
Schrijf pytest-testfuncties om de volgende voorwaarden te valideren:
- Controleren dat het aanroepen van
is_even(4)Trueretourneert. - Controleren dat het aanroepen van
add(2, 3)gelijk is aan5. - Controleren dat het aanroepen van
multiply(3, 7)21retourneert, en geef een gedetailleerde foutmelding als de assertie faalt. - Controleren dat het aanroepen van
divide(10, 0)eenZeroDivisionErrorveroorzaakt. - Controleren dat de string
'grape'voorkomt in defruit_list.
Schrijf elke test als een aparte functie met het voorvoegsel test_. Gebruik assert-statements voor validatie. Gebruik voor de uitzondering de pytest.raises contextmanager. Gebruik voor het gedetailleerde bericht een f-string die het werkelijke resultaat toont als de assertie faalt.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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?
Geweldig!
Completion tarief verbeterd naar 3.13
Het Gebruik van de Assert-Instructie in Pytest: Het Valideren van Testcondities
Veeg om het menu te tonen
De assert-instructie wordt gebruikt om te verifiëren dat een conditie True is. Als de conditie False is, faalt de test. Pytest breidt de basis assert uit door gedetailleerde output te geven wanneer de bewering faalt, waardoor het eenvoudiger wordt te begrijpen wat er misging.
Eenvoudige Asserties:
Controleren dat de conditie wordt geëvalueerd als True. Als deze wordt geëvalueerd als False, geeft Pytest een AssertionError en markeert de test als mislukt.
assert condition
In het volgende voorbeeld zou word.isupper() True moeten retourneren als word in hoofdletters staat. Zo niet, dan faalt de test.
def test_is_uppercase():
word = "HELLO"
assert word.isupper()
Vergelijkende Asserties:
assert actual == expected
Verifiëren dat het resultaat van een bewerking (actual) overeenkomt met de verwachte waarde.
def test_addition():
assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"
Hier wordt de add-functie getest om te waarborgen dat deze twee getallen correct optelt. Het bericht na de komma biedt extra context als de test faalt.
Asserties met Gedetailleerde Feedback:
assert condition, message
Een aangepaste foutmelding geven die wordt weergegeven wanneer de assertie faalt, voor meer inzicht in het probleem.
def test_multiply():
result = multiply(2, 5)
assert result == 10, f"Expected 10, got {result}"
Deze assertie controleert of de functie multiply 10 retourneert bij het vermenigvuldigen van 2 en 5. Het aangepaste bericht verduidelijkt de verwachte uitkomst versus het daadwerkelijke resultaat als de test faalt.
Asserties voor Excepties:
pytest.raises(ExceptionType)
Bevestigen dat een bepaald type exceptie wordt opgegooid door een codeblok.
import pytest
def divide(x, y):
return x / y
def test_divide_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
Deze test waarborgt dat delen door nul een ZeroDivisionError veroorzaakt. Dit is essentieel voor het testen van foutafhandeling in de code.
Geavanceerde Asserties:
Gebruik asserties om complexere condities te controleren, zoals de inhoud van lijsten, dictionaries of meer genuanceerde toestanden in de applicatie.
def test_inventory():
inventory = ["apple", "banana", "cherry"]
assert "banana" in inventory, "Banana should be in the inventory"
Deze test controleert of een item aanwezig is in een lijst en geeft duidelijke feedback als het item ontbreekt.
Swipe to start coding
Schrijf pytest-testfuncties om de volgende voorwaarden te valideren:
- Controleren dat het aanroepen van
is_even(4)Trueretourneert. - Controleren dat het aanroepen van
add(2, 3)gelijk is aan5. - Controleren dat het aanroepen van
multiply(3, 7)21retourneert, en geef een gedetailleerde foutmelding als de assertie faalt. - Controleren dat het aanroepen van
divide(10, 0)eenZeroDivisionErrorveroorzaakt. - Controleren dat de string
'grape'voorkomt in defruit_list.
Schrijf elke test als een aparte functie met het voorvoegsel test_. Gebruik assert-statements voor validatie. Gebruik voor de uitzondering de pytest.raises contextmanager. Gebruik voor het gedetailleerde bericht een f-string die het werkelijke resultaat toont als de assertie faalt.
Oplossing
Bedankt voor je feedback!
single