5.3.5 Oggetti TestCase

Ogni istanza di TestCase rappresenta un singolo test, ma ogni sotto classe concreta può essere utilizzata per definire test multipli -- la classe concreta rappresenta una singola test fixture. La fixture viene creata e ripulita per ogni caso da testare.

Le istanze TestCase forniscono tre gruppi di metodi: un gruppo è utilizzato per eseguire il test, un altro viene utilizzato dall'implementazione del test per verificare le condizioni e riportare gli errori, mentre alcuni metodi di analisi permettono la raccolta di informazioni riguardanti il test stesso.

I metodi nel primo gruppo sono:

setUp( )
Metodo chiamato per preparare la test fixture. Viene chiamato immediatamente prima di chiamare il metodo di test; ogni eccezione sollevata da questo metodo sarà considerata un errore e non un fallimento del test. L'implementazione predefinita non fa nulla.

tearDown( )
Metodo chiamato immediatamente dopo che il metodo di test è stato chiamato ed il risultato registrato. Viene chiamato anche se il metodo di test solleva un'eccezione, perciò l'implementazione in sotto classi può necessitare di essere particolarmente attenta circa il controllo dello stato interno. Ogni eccezione sollevata da questo metodo sarà considerata un errore e non un fallimento del test. Questo metodo verrà chiamato soltanto nel caso in cui setUp() abbia successo, senza riguardo al risultato del metodo di test. L'implementazione predefinita non fa nulla.

run( [result])
Esegue il test, inserendo il risultato nell'oggetto test result passato come result. Se result viene omesso o è None, viene creato ed usato un oggetto result temporaneo, ma non è reso disponibile al chiamante. Questo equivale a chiamare semplicemente l'istanza TestCase.

debug( )
Esegue il test senza raccogliere il risultato. Questo permette alle eccezioni sollevate dal test di essere propagate al chiamante, e può essere usato per supportare i test all'interno di un debugger.

Il codice del test può utilizzare uno dei seguenti metodi per verificare e riportare fallimenti.

assert_( expr[, msg])
failUnless( expr[, msg])
Segnala il fallimento del test se expr è falsa; la spiegazione dell'errore si troverà in msg, se fornito, altrimenti sarà None.

assertEqual( first, second[, msg])
failUnlessEqual( first, second[, msg])
Verifica che first e second siano uguali. Se il valore risulta diverso, il test fallirà con la spiegazione data da msg o None. Notate che usando failUnlessEqual() si ottiene un miglior risultato che effettuando la comparazione come primo parametro di failUnless(): il valore predefinito per msg può essere computato per includere le rappresentazioni sia di first che di second.

assertNotEqual( first, second[, msg])
failIfEqual( first, second[, msg])
Verifica che il first e second siano diversi. Se il valore risulta uguale, il test fallirà con la spiegazione inserita in msg o None. Notate che usando failIfEqual() si ottiene un risultato migliore che effettuando la comparazione come primo parametro di failUnless(): il valore predefinito per msg può essere computato per includere le rappresentazioni sia di first che di second.

assertAlmostEqual( first, second[, places[, msg]])
failUnlessAlmostEqual( first, second[, places[, msg]])
Verifica che first e second siano approssimativamente uguali, calcolandone la differenza, arrotondandola al numero di posizioni decimali(NdT: places) passate e confrontandola con zero. Notate che comparare un dato numero di posizioni decimali non è la stessa cosa di comparare un numero che abbia un dato numero di cifre significative. Se i valori non risultano uguali, il test fallisce con la spiegazione data da msg, oppure None.

assertNotAlmostEqual( first, second[, places[, msg]])
failIfAlmostEqual( first, second[, places[, msg]])
Verifica che first e second non siano approssimativamente uguali calcolandone la differenza, arrotondandola al numero di posizioni decimali(NdT: places) passate e confrontandola con zero. Notate che comparare un dato numero di posizioni decimali non è la stessa cosa di comparare un numero che abbia un dato numero di cifre significative. Se i valori non risultano uguali, il test fallisce con la spiegazione data da msg, oppure None.

assertRaises( exception, callable, ...)
failUnlessRaises( exception, callable, ...)
Verifica che un'eccezione venga sollevata quando callable viene chiamata con un qualsiasi argomento posizionale o a parola chiave che vengono passati anche a assertRaises(). Il test passa se viene sollevata exception, restituisce errore nel caso l'eccezione sollevata sia un'altra, oppure fallisce se non viene sollevata alcuna eccezione. Per poter catturare insiemi di eccezioni, può essere passato come argomento exception una tupla contenente le classi delle eccezioni in questione.

failIf( expr[, msg])
Il contrario del metodo failUnless() è il metodo failIf(). Questo metodo segnala un fallimento del test se expr è vera, con msg o None come messaggio d'errore.

fail( [msg])
Segnala un fallimento del test incondizionatamente, con msg o None come messaggio d'errore.

failureException
Questo attributo di classe contiene l'eccezione sollevata dal metodo test(). Se un ambiente di test necessita l'uso di un'eccezione particolare, forse per trasportare maggiori informazioni, si deve creare una sotto classe di questa eccezione per restare consistenti con l'ambiente. Il valore iniziale di questo attributo è AssertionError.

Gli ambienti di test possono utilizzare i seguenti metodi per raccogliere informazioni riguardanti il test:

countTestCases( )
Restituisce il numero di test rappresentati da questo oggetto test. Per le istanze di TestCase, il risultato sarà sempre 1, ma questo metodo è implementato anche dalla classe TestSuite la quale può restituire valori maggiori.

defaultTestResult( )
Restituisce il tipo predefinito dell'oggetto test result che deve essere usato per eseguire il test.

id( )
Restituisce una stringa che identifica il test case specifico. Solitamente è il nome completo del metodo di test, incluso il modulo ed il nome della classe.

shortDescription( )
Restituisce in un'unica riga la descrizione del test, oppure None se non è stata fornita alcuna descrizione. L'implementazione predefinita di questo modulo prevede la restituzione della prima riga della stringa di documentazione del metodo di test, se disponibile, oppure None.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.