[Python] pytest e classi

Manlio Perillo manlio.perillo a gmail.com
Mar 27 Ott 2015 20:29:09 CET


2015-10-27 15:51 GMT+01:00 enrico franchi <enrico.franchi a gmail.com>:
> [...]
>> La libreria standard di Go usa questo metodo, ed in effetti può essere
>> visto come un problema.
>
>
> In realta' non lo e'. Il punto e' che tutto questo discorso dei test e' nato
> attorno ad una primitiva come assert che quando hai un problema
> essenzialmente interrompe l'esecuzione li (tipicamente tirando un'eccezione)
> e quindi le asserzioni successive non vengono eseguite.
>

Questo comportamento non è del tutto irragionevole.
Considera un test case in cui devo testare che un array non sia NULL e
che contenga una serie di caratteri.
Se il test assert p != NULL fallisce, il test case *deve* essere terminato.

Tempo fa avevo sviluppato una libreria per l'unit testing in C (oddio,
quanto codice ho che non ho mai publicato...).
La libreria usa il protocollo TAP, eppure avevo deciso di interrompere
l'esecuzione della funzione di test
in caso di fallimento, anche se non necessario (usando longjmp),
perchè mi sembrava la scelta più ragionevole.

> La semantica dei test di Go invece e' basata attorno a primitive che marcano
> il test fallito, ma proseguono con l'esecuzione. Quindi, di fatto, buona
> parte dei problemi non ci sono piu'.
> Personalmente la trovo una scelta eccellente, visto che e' molto piu' facile
> da usare e di default porta meno problemi di assert.
>

Non so perchè ero convinto che il test fosse interrotto in caso di
fallimento, anche se la documentazione
è chiara.


Ciao  Manlio


Maggiori informazioni sulla lista Python