Scrivere Test con Unittest
Scorri per mostrare il menu
Quando si desidera assicurarsi che il proprio codice funzioni come previsto, la scrittura di test automatici è fondamentale. Il modulo unittest di Python è un framework integrato che consente di creare e organizzare facilmente i test. I casi di test vengono scritti creando classi che ereditano da unittest.TestCase. All'interno di queste classi, si definiscono metodi i cui nomi iniziano con test_. Ogni metodo verifica un aspetto specifico del codice.
Una suite di test è una raccolta di casi di test che possono essere eseguiti insieme. Per impostazione predefinita, unittest individua ed esegue tutti i metodi test_ nelle classi TestCase. Per verificare che il codice produca i risultati attesi, si utilizzano metodi di asserzione come assertEqual, assertTrue, assertFalse e assertRaises. Questi metodi confrontano i risultati effettivi con quelli attesi e segnalano eventuali errori se non corrispondono.
Per eseguire i test, è possibile utilizzare la riga di comando oppure chiamare unittest.main() alla fine del file di test.
assertRaises segue uno schema distinto rispetto ad altri metodi di asserzione come assertEqual o assertTrue. Invece di verificare un valore finale, funziona come context manager utilizzando l'istruzione with per creare una zona protetta. Questo consente al test di monitorare il codice durante l'esecuzione e "intercettare" l'errore previsto.
1234567891011121314151617181920212223import unittest def add(a, b): return a + b def divide(a, b): return a / b class TestMathFunctions(unittest.TestCase): def test_add_positive_numbers(self): self.assertEqual(add(2, 3), 5) def test_add_negative_numbers(self): self.assertEqual(add(-2, -3), -5) def test_divide_normal(self): self.assertAlmostEqual(divide(10, 2), 5.0) def test_divide_by_zero(self): with self.assertRaises(ZeroDivisionError): divide(10, 0) unittest.main(argv=['first-arg-is-ignored'], exit=False)
La funzione unittest.main() in questo capitolo include alcuni parametri aggiuntivi richiesti solo per questo ambiente di apprendimento. Questi aiutano il codice a funzionare correttamente sulla piattaforma e non fanno parte dei concetti fondamentali di Python che devi apprendere ora.
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