Utilizzo dell'Istruzione Assert in Pytest: Validazione delle Condizioni di Test
L'istruzione assert viene utilizzata per verificare che una condizione sia True. Se la condizione è False, il test fallisce. Pytest migliora il semplice assert fornendo un output dettagliato quando l'asserzione fallisce, facilitando la comprensione dell'errore.
Asserzioni Semplici:
Verifica che la condizione sia valutata come True. Se viene valutata come False, Pytest solleva un AssertionError e segna il test come fallito.
assert condition
Nel seguente esempio, word.isupper() dovrebbe restituire True se word è in maiuscolo. In caso contrario, il test fallisce.
def test_is_uppercase():
word = "HELLO"
assert word.isupper()
Asserzioni Comparative:
assert actual == expected
Per verificare che il risultato di un'operazione (actual) corrisponda al valore atteso.
def test_addition():
assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"
Qui, la funzione add viene testata per assicurarsi che sommi correttamente due numeri. Il messaggio dopo la virgola fornisce un contesto aggiuntivo se il test fallisce.
Asserzioni con Feedback Dettagliato:
assert condition, message
Per fornire un messaggio di errore personalizzato che viene visualizzato quando l'asserzione fallisce, offrendo maggiori dettagli sul problema.
def test_multiply():
result = multiply(2, 5)
assert result == 10, f"Expected 10, got {result}"
Questa asserzione verifica se la funzione multiply restituisce 10 moltiplicando 2 e 5. Il messaggio personalizzato chiarisce l'esito atteso rispetto al risultato effettivo in caso di fallimento del test.
Asserzioni per Eccezioni:
pytest.raises(ExceptionType)
Per confermare che una determinata eccezione venga sollevata da un blocco di codice.
import pytest
def divide(x, y):
return x / y
def test_divide_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
Questo test assicura che la divisione per zero sollevi un ZeroDivisionError. È fondamentale per testare la gestione degli errori nel codice.
Asserzioni Avanzate:
Utilizzare le asserzioni per verificare condizioni più complesse, come il contenuto di liste, dizionari o stati più articolati nell'applicazione.
def test_inventory():
inventory = ["apple", "banana", "cherry"]
assert "banana" in inventory, "Banana should be in the inventory"
Questo test verifica la presenza di un elemento in una lista, fornendo un feedback chiaro se l'elemento manca.
Swipe to start coding
Scrivi funzioni di test pytest per validare le seguenti condizioni:
- Verifica che la chiamata a
is_even(4)restituiscaTrue. - Verifica che la chiamata a
add(2, 3)sia uguale a5. - Verifica che la chiamata a
multiply(3, 7)restituisca21e fornisci un messaggio di errore dettagliato se l'asserzione fallisce. - Verifica che la chiamata a
divide(10, 0)generi un'eccezioneZeroDivisionError. - Verifica che la stringa
'grape'sia presente infruit_list.
Scrivi ciascun test come funzione separata utilizzando il prefisso test_. Usa le istruzioni assert per la validazione. Per l'eccezione, utilizza il context manager pytest.raises. Per il messaggio dettagliato, usa una f-string che mostri il risultato effettivo in caso di fallimento dell'asserzione.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Utilizzo dell'Istruzione Assert in Pytest: Validazione delle Condizioni di Test
Scorri per mostrare il menu
L'istruzione assert viene utilizzata per verificare che una condizione sia True. Se la condizione è False, il test fallisce. Pytest migliora il semplice assert fornendo un output dettagliato quando l'asserzione fallisce, facilitando la comprensione dell'errore.
Asserzioni Semplici:
Verifica che la condizione sia valutata come True. Se viene valutata come False, Pytest solleva un AssertionError e segna il test come fallito.
assert condition
Nel seguente esempio, word.isupper() dovrebbe restituire True se word è in maiuscolo. In caso contrario, il test fallisce.
def test_is_uppercase():
word = "HELLO"
assert word.isupper()
Asserzioni Comparative:
assert actual == expected
Per verificare che il risultato di un'operazione (actual) corrisponda al valore atteso.
def test_addition():
assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"
Qui, la funzione add viene testata per assicurarsi che sommi correttamente due numeri. Il messaggio dopo la virgola fornisce un contesto aggiuntivo se il test fallisce.
Asserzioni con Feedback Dettagliato:
assert condition, message
Per fornire un messaggio di errore personalizzato che viene visualizzato quando l'asserzione fallisce, offrendo maggiori dettagli sul problema.
def test_multiply():
result = multiply(2, 5)
assert result == 10, f"Expected 10, got {result}"
Questa asserzione verifica se la funzione multiply restituisce 10 moltiplicando 2 e 5. Il messaggio personalizzato chiarisce l'esito atteso rispetto al risultato effettivo in caso di fallimento del test.
Asserzioni per Eccezioni:
pytest.raises(ExceptionType)
Per confermare che una determinata eccezione venga sollevata da un blocco di codice.
import pytest
def divide(x, y):
return x / y
def test_divide_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
Questo test assicura che la divisione per zero sollevi un ZeroDivisionError. È fondamentale per testare la gestione degli errori nel codice.
Asserzioni Avanzate:
Utilizzare le asserzioni per verificare condizioni più complesse, come il contenuto di liste, dizionari o stati più articolati nell'applicazione.
def test_inventory():
inventory = ["apple", "banana", "cherry"]
assert "banana" in inventory, "Banana should be in the inventory"
Questo test verifica la presenza di un elemento in una lista, fornendo un feedback chiaro se l'elemento manca.
Swipe to start coding
Scrivi funzioni di test pytest per validare le seguenti condizioni:
- Verifica che la chiamata a
is_even(4)restituiscaTrue. - Verifica che la chiamata a
add(2, 3)sia uguale a5. - Verifica che la chiamata a
multiply(3, 7)restituisca21e fornisci un messaggio di errore dettagliato se l'asserzione fallisce. - Verifica che la chiamata a
divide(10, 0)generi un'eccezioneZeroDivisionError. - Verifica che la stringa
'grape'sia presente infruit_list.
Scrivi ciascun test come funzione separata utilizzando il prefisso test_. Usa le istruzioni assert per la validazione. Per l'eccezione, utilizza il context manager pytest.raises. Per il messaggio dettagliato, usa una f-string che mostri il risultato effettivo in caso di fallimento dell'asserzione.
Soluzione
Grazie per i tuoi commenti!
single