|
|
|
La libreria di riferimento di Python |
|
|
|
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:
-
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.
-
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.
-
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.
-
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.
-
- 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.
-
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.
-
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:
-
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.
-
Restituisce il tipo predefinito dell'oggetto test result che
deve essere usato per eseguire il test.
-
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.
-
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.
|
|
|
La libreria di riferimento di Python |
|
|
|
Release 2.3.4, documentation updated on 21. maggio 2005.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.