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

2010-02-20 Per discussione Alessandro Dentella
  Sono anche convinto che la flessibilità delle unittest (o simili) sia
  molto
  maggiore in varie circostanze per cui non ci rinuncerei affatto.
 
 Non ho intenzione di farti cambiare idea: visto che lo strumento è stato
 citato, queste sono le mie considerazioni e i motivi per cui io non le uso
 se non per testare documentazione. Secondo me la documentazione deve essere
 esplicativa mentre i test devono essere esaustivi: visto i due obiettivi
 spesso finiscono con l'essere in contraddizione preferisco tenerli
 fisicamente separati e usare lo strumento migliore per l'obiettivo.

non è che cerchi contrapposizione dove non c'è? Mi pare che le differenze
fra il mio ed il tuo punti di vista siano relativamente piccole.

La mia frase che cito era per confermare che anche io trovo una flessibilità
maggiore in *unittest* e simili (nose, py.test migliorano in vario modo ma non
stravolgono il concetto degli unittest) ed a questi non rinuncerei, ma non
rinuncerei neanche ai doctest quando voglio qualcosa che assomigli di più
alla documentazione.

[Per inciso non metto i test nelle docstring ma in file separati, proprio
 perché son convinto che una docstring troppo lunga non sia comoda.]

sandro
*:-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2010-02-20 Per discussione Daniele Varrazzo
On Sat, 20 Feb 2010 09:57:21 +0100, Alessandro Dentella san...@e-den.it
wrote:

 non è che cerchi contrapposizione dove non c'è? Mi pare che le
differenze
 fra il mio ed il tuo punti di vista siano relativamente piccole.

Scusami, ero un po' lanciato ;)

A presto, ciao!

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2010-02-20 Per discussione Simone Federici
A me piacciono i doctest, ovviamente li uso giusto per metodi semplisiccimi,
non devono superare le 4 righe :-D


Simone Federici
---
Software Architect



2010/2/20 Daniele Varrazzo p...@develer.com

 On Sat, 20 Feb 2010 09:57:21 +0100, Alessandro Dentella san...@e-den.it
 wrote:

  non è che cerchi contrapposizione dove non c'è? Mi pare che le
 differenze
  fra il mio ed il tuo punti di vista siano relativamente piccole.

 Scusami, ero un po' lanciato ;)

 A presto, ciao!

 --
 Daniele Varrazzo - Develer S.r.l.
 http://www.develer.com
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2010-02-19 Per discussione Daniele Varrazzo
On Fri, 19 Feb 2010 19:36:02 +0100, Alessandro Dentella san...@e-den.it
wrote:
 O nose... io ultimamente lo apprezzo molto.
 
 
 In questa lista si è sponsorizzato a più riprese nose, qualcuno può dire
 come si confronta con py.test?

Sono uguali: se ne usi uno difficilmente rimpiangi l'altro (secondo me).

 A me piaciono anche i doctest quando penso ai test come documentazione
di
 API ma sia nose che py.test possono eseguire i test in formato doctest
ma
 danno un sommario molto povero ovvero cosiderano un file.txt con dentro
i
 test come un singolo test, quando il modulo doctest li considera
 sigolarmente. 
 
 Inoltre io non sono riuscito ad usare in modo utile l'opzione per cui
 note/py.test aprono la shell di debug quando capita un errore, cosa che
 invece funziona bene sia con nose che con py.test con test di tipo
 unittest.

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/
[3]
http://epydoc.svn.sourceforge.net/viewvc/epydoc/trunk/epydoc/src/epydoc/test/util.py?revision=1502view=markup

Quindi per me SE uno scrive delle docstring e SE nelle docstring capita
che ci sia un esempio autocontenuto (e non fetch restituisce un record:
 Record.fetch()... e poi serve un database e come configurare il DSN di
test...) allora tu fai girare i doctest e verifichi che la docstring sia
consistente con quello che dichiara. Che poi siano anche test aggiuntivi
per la test suite completa del programma, tanto meglio. Ma che le docstring
sostituiscano una unit test apposita, secondo me, è un giochino carino,
divertente, ma durato troppo.

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2010-02-19 Per discussione Manlio Perillo
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Daniele Varrazzo ha scritto:
 [...]
 Inoltre io non sono riuscito ad usare in modo utile l'opzione per cui
 note/py.test aprono la shell di debug quando capita un errore, cosa che
 invece funziona bene sia con nose che con py.test con test di tipo
 unittest.
 
 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ì: 
 

Concordo su tutto.
Cominci ad usare una cosa perchè è comoda, e finisci con l'abusarne,
insistendo anche quando perdi la comodità e l'espressività.


Ciao  Manlio
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkt+7h0ACgkQscQJ24LbaUS2OwCePgc1wlTLk8OrfI+3Xzty+Bfp
ZBcAn3UBMMs7kkfRMpLJvFO5Bhic0D9l
=/KF2
-END PGP SIGNATURE-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


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

2010-02-19 Per discussione Daniele Varrazzo
On Fri, 19 Feb 2010 22:51:12 +0100, Alessandro Dentella san...@e-den.it
wrote:

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

Il fatto è che in una unit test le funzioni helper sono codice messo a
fianco al codice, con funzioni che chiamano altre funzioni... normalissimo
python, no?

Una doctest è un'imbragatura sadomaso che costringe ad un'unica funzione
di test, ovvero assert str(o) == s con s costante. Qualunque test lo devi
ridurre a questo, tutti i metodi che ti aspetti in un framework di test
suite ricco (es. assertAlmostEqual...) te lo scordi e devi sempre starti ad
inventare un helper() per cui str(helper(o)) == s.

Se anche devi mettere funzioni helper in una test suite, hanno la
possibilità di lavorare su tipi di dati più ricchi, sfruttando tutto quello
che offre il linguaggio, anziché rimpiazzare stringhe su stringhe fino a
ridurre il risultato una costante da confrontare per eguaglianza col
prototipo (ah, a meno di IGNORE_EXCEPTION_DETAIL e NORMALIZE_WHITESPACE...
altre funzioni che trasformano testo in testo)

   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. 

Già parlare di metodologie è soggettivo, parlare di leggibilità forse lo è
anche di più... In ogni caso io definisco una docstring leggibile quando è
documentazione leggibile, non quando è un test leggibile.

E visto che i test *puoi* metterli altrove ma le docstring no, devono
stare nel modulo, e visto che 500 righe di test ci stanno bene su un metodo
di 10 righe, ma 500 righe di test in mezzo a metodi di 10 righe (e dico
proprio *in mezzo*, tra un metodo e l'altro)... io le docstring non le
ammiro.

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

Non ho intenzione di farti cambiare idea: visto che lo strumento è stato
citato, queste sono le mie considerazioni e i motivi per cui io non le uso
se non per testare documentazione. Secondo me la documentazione deve essere
esplicativa mentre i test devono essere esaustivi: visto i due obiettivi
spesso finiscono con l'essere in contraddizione preferisco tenerli
fisicamente separati e usare lo strumento migliore per l'obiettivo.

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python