[Python] test [was: Re: Come fareste voi?]

Alessandro Dentella sandro a e-den.it
Ven 19 Feb 2010 22:51:12 CET


> Perché, e qui lo dichiaro pubblicamente, i doctest sono la tecnologia di
> test più abusata e meno adatta che sia venuto in mente a chiunque abbia
> visto un prompt fatto così: >>>
> 
> I doctest sono un brillante modo di testare... la documentazione!!! da
> quando sono diventati un modo di testare il programma? Purtroppo da
> abbastanza presto, e sono uno strumento oscenamente scomodo per farlo, nel
> senso che costringono a contorsioni da kamasutra per eliminare la
> variabilità che c'è nell'output dei comandi [1] o per mettere insieme una
> test suite con setup e teardown. In tutto questo le docstring perdono il
> significato originale: essere documentazione concisa.
> 
> [1]
> http://docs.python.org/library/doctest.html#option-flags-and-directives
> 
> Ed Loper, autore di Epydoc (credo anche uno degli autori di doctest), ha
> usato solo doctest per documentare Epydoc stesso [2]. Ma tu guarda che si è
> dovuto inventare [3] per far girare una test suite un po' più complessa?!?!
> Ne è valsa la pena? A me non sembra.
> 
> [2]
> http://epydoc.svn.sourceforge.net/viewvc/epydoc/trunk/epydoc/src/epydoc/test/

A me pare che questo esempio sia un esempio dove la doctest abbia un senso e
sia anche più chiaro di quanto potrebbero essere degli unittest o test di
nose/py.test, che è probabilmntee simile a quello che dicevi prima: test
della documentazione.


> [3]
> http://epydoc.svn.sourceforge.net/viewvc/epydoc/trunk/epydoc/src/epydoc/test/util.py?revision=1502&view=markup

Questo molto meno, ma:

  1. probabilmente anche in uno unittest avrebbero dovuto esserci delle
     test/helper function fatte per rendere i test più leggibili...

  2. proprio perché ce ne è più di uno mi pare che sia corretto scegliere il
     migliore per ogni singola situazione. 

     E` corretto chiedere che si evitino contorsionismi strani, ma spesso la
     leggibilità di test fatti con doctest è decisamente elevata. 

Sono anche convinto che la flessibilità delle unittest (o simili) sia molto
maggiore in varie circostanze per cui non ci rinuncerei affatto.

sandro
*:-)


Maggiori informazioni sulla lista Python