Python e i test unitari

Da qualche giorno mi sto divertendo con python.
Devo dire che il linguaggio è molto divertente, abbastanza semplice da imparare e intuitivo.
Python ha una suite di test integrata nelle librerie del linguaggio e questo mi ha piacevolemente sorpreso. Basta fare un import unittest che subito tutto è a disposizione.
Mettiamo che io abbia una file calculator.py con al suo interno una funzione che voglio testare.
Creerò un file calculator_specs.py con i test che stressano la funzione.

# Fabio Mattei
# 18 August 2012

import unittest

from calculator import add

class TestSequenceFunctions(unittest.TestCase):

    def test_return_0_for_empty_strings(self):
        self.assertEqual(add(''), 0)

    def test_return_bare_numbers(self):
        self.assertEqual(add('0'), 0)
        self.assertEqual(add('1'), 1)

    def test_adds_numbers(self):
        self.assertEqual(add('1,2'), 3)
        self.assertEqual(add('1,10'), 11)

if __name__ == '__main__':
    unittest.main()

È importante importare sia la suite di test che il file da testare.
La classe potrà un nome qualsiasi ma doveà surclassare unittest.TestCase.
Tutti i metodi all’interno della classe devono cominciare con la parola test.
A questo punto basta lanciare il file da prompt con un normalissimo: >python calculator_specs.py e la suite di test si attiverà
Ovviamente non dimentichiamoci di definire il file in cui la funzione viene definita! 🙂
calculator.py

# Fabio Mattei
# 18 August 2012

def add(st):
	st = st.replace('\n', ',')
	if st:
		return add_numbers_in_string(st)
	else:
		return 0
	
def add_numbers_in_string(st):
	return sum(map(int, st.split(',')))

Davvero molto bello!

Nessun commento

Lascia un commento

La tua email non sarà mai resa pubblica.I campi obbligatori sono segnalati con un *