Introduzione a Unittest in Python: Scrivere Test Unitari Strutturati
Unittest fa parte della libreria standard di Python, il che significa che non sono necessarie installazioni aggiuntive per iniziare. È progettato attorno al concetto di casi di test, che sono classi Python derivate dalla classe TestCase del framework. Unittest è uno strumento eccellente per chiunque inizi il proprio percorso nel testing, poiché struttura i test in modo da riflettere i principi della programmazione orientata agli oggetti.
La struttura di Unittest
In Unittest, ogni test è un metodo all'interno di una sottoclasse di unittest.TestCase. Questo design incoraggia il raggruppamento di test correlati, facilitando l'organizzazione logica del codice di test e rendendolo più leggibile.
Scrivere un test con Unittest
Testiamo una semplice funzione che calcola la media di due numeri. Ecco la funzione che vogliamo testare:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Creazione di un caso di test
Per creare un caso di test, è necessario definire una classe che eredita da unittest.TestCase. All'interno di questa classe, è possibile definire metodi per testare la funzione calculate_average.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Per prima cosa si
importil modulo Unittest, che fa parte della libreria standard di Python; class TestCalculateAverage(unittest.TestCase)crea un nuovo caso di test. Eredita daunittest.TestCase, che fornisce la funzionalità di testing;- Ogni metodo nella classe dovrebbe iniziare con
test_; - I metodi utilizzano specifiche istruzioni assert per verificare se una condizione è vera.
Esempio di Output di Test Riuscito
Quando tutti i test vengono superati in Unittest, l'output è semplice e indica che tutti i test sono stati eseguiti con successo senza alcun errore. Ecco un esempio di esecuzione di test riuscita:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Esempio di Output di Test Fallito
Se uno o più test falliscono, l'output fornirà dettagli sui fallimenti, inclusi quali test sono falliti e il motivo. Ecco un esempio di come potrebbe apparire l'output quando un test fallisce:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Questo output include:
..Findica che sono stati eseguiti tre test; i primi due sono stati superati (rappresentati da..), mentre il terzo è fallito (F);FAILED (failures=1)mostra che c'è stato un fallimento tra i test eseguiti;- Il report dettagliato dell'errore inizia con l'identificatore del test (
test_average_floats) e la classe (TestCalculateAverage). Fornisce un traceback alla riga del codice di test che ha causato il fallimento e spiega la natura dell'errore di asserzione, includendo il valore atteso, il valore effettivo e il margine di errore accettabile.
Grazie per i tuoi commenti!
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 what the different assert methods in Unittest do?
How do I run these tests from the command line?
What should I do if a test fails?
Fantastico!
Completion tasso migliorato a 3.13
Introduzione a Unittest in Python: Scrivere Test Unitari Strutturati
Scorri per mostrare il menu
Unittest fa parte della libreria standard di Python, il che significa che non sono necessarie installazioni aggiuntive per iniziare. È progettato attorno al concetto di casi di test, che sono classi Python derivate dalla classe TestCase del framework. Unittest è uno strumento eccellente per chiunque inizi il proprio percorso nel testing, poiché struttura i test in modo da riflettere i principi della programmazione orientata agli oggetti.
La struttura di Unittest
In Unittest, ogni test è un metodo all'interno di una sottoclasse di unittest.TestCase. Questo design incoraggia il raggruppamento di test correlati, facilitando l'organizzazione logica del codice di test e rendendolo più leggibile.
Scrivere un test con Unittest
Testiamo una semplice funzione che calcola la media di due numeri. Ecco la funzione che vogliamo testare:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Creazione di un caso di test
Per creare un caso di test, è necessario definire una classe che eredita da unittest.TestCase. All'interno di questa classe, è possibile definire metodi per testare la funzione calculate_average.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Per prima cosa si
importil modulo Unittest, che fa parte della libreria standard di Python; class TestCalculateAverage(unittest.TestCase)crea un nuovo caso di test. Eredita daunittest.TestCase, che fornisce la funzionalità di testing;- Ogni metodo nella classe dovrebbe iniziare con
test_; - I metodi utilizzano specifiche istruzioni assert per verificare se una condizione è vera.
Esempio di Output di Test Riuscito
Quando tutti i test vengono superati in Unittest, l'output è semplice e indica che tutti i test sono stati eseguiti con successo senza alcun errore. Ecco un esempio di esecuzione di test riuscita:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Esempio di Output di Test Fallito
Se uno o più test falliscono, l'output fornirà dettagli sui fallimenti, inclusi quali test sono falliti e il motivo. Ecco un esempio di come potrebbe apparire l'output quando un test fallisce:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Questo output include:
..Findica che sono stati eseguiti tre test; i primi due sono stati superati (rappresentati da..), mentre il terzo è fallito (F);FAILED (failures=1)mostra che c'è stato un fallimento tra i test eseguiti;- Il report dettagliato dell'errore inizia con l'identificatore del test (
test_average_floats) e la classe (TestCalculateAverage). Fornisce un traceback alla riga del codice di test che ha causato il fallimento e spiega la natura dell'errore di asserzione, includendo il valore atteso, il valore effettivo e il margine di errore accettabile.
Grazie per i tuoi commenti!