È preferibile che i test per il package test utilizzino il modulo unittest e seguano alcune linee guida. Per prima cosa tutti i nomi dei metodi di test devono iniziare con "test_" come anche il nome del modulo. Questo è necessario affinchè il test driver li riconosca come metodi di test. Inoltre, non dovrebbe essere inclusa alcuna stringa di documentazione. Al loro posto si dovrebbe utilizzare un commento (come "# Le funzioni di test restituiscono solo True o False") per fornire documentazione al metodo di test. Questo viene fatto perché le stringhe di documentazione (NdT: docstring) se esistono vengono stampate e perciò non risulta chiaro quale test sia in esecuzione.
Spesso viene utilizzata una costruzione basilare tipo questa:
import unittest
from test import test_support
class MyTestCase1(unittest.TestCase):
# Usate solo setUp() e tearDown() se necessario
def setUp(self):
... codice da utilizzare per preparare i test ...
def tearDown(self):
... codice da eseguire per la ripulitura dopo i test ...
def test_feature_one(self):
# Test feature one.
... codice di test ...
def test_feature_two(self):
# Test feature two.
... codice di test ...
... altri metodi di test ...
class MyTestCase2(unittest.TestCase):
... stessa struttura di MyTestCase1 ...
... altre classi di test
def test_main():
test_support.run_unittest(MyTestCase1,
MyTestCase2,
... elencate altri test ...
)
if __name__ == '__main__':
test_main()
Questo codice permette alla suite di test di essere eseguita sia da test.regrtest sia autonomamente come script.
Lo scopo dei test di regressione è quello di provocare la ``rottura'' del codice, facendolo andare in errore. Per cui è necessario seguire alcune linee guida:
class TestFuncAcceptsSequences(unittest.TestCase):
func = mySuperWhammyFunction
def test_func(self):
self.func(self.arg)
class AcceptLists(TestFuncAcceptsSequences):
arg = [1,2,3]
class AcceptStrings(TestFuncAcceptsSequences):
arg = 'abc'
class AcceptTuples(TestFuncAcceptsSequences):
arg = (1,2,3)
Vedete anche:
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.