[Python] pyunit e test con i database

Daniele Varrazzo piro a develer.com
Lun 10 Nov 2008 17:23:15 CET


On Mon, 10 Nov 2008 16:54:07 +0100, "Giovanni Marco Dall'Olio"
<dalloliogm a gmail.com> wrote:
> 2008/11/10 Fabrizio Mancini <mr.file a gmail.com>:
>> Ciao a tutti,
>> sono abbastanza nuovo sul discorso python e pyunit, e soprattutto quello
> che
>> riguarda lo unit testing.
>> Volevo chiedere consiglio su come poter fare il test di classi che si
>> occupano di interfacciarsi con i database.
>> Avete esperienze e / o consigli su come procedere?
>> ho letto un po in giro sui mock / stub e diciamo che ne ho ricavato
> poche
>> idee ma molto confuse.
>> Last but not least, ho pensato di usare il modulo pyunit, ma ho visto
> che ne
>> esistono altri.
>> Avete anche a tal riguardo consigli e suggerimenti?

Io ho sempre usato unittest, ma i test dei database sono un po'
rompiscatole: ho sempre dovuto fare dei magheggi per assicurarmi di
lanciare un setup solo una volta per ogni test run anzichč ad ogni test
case e cose del genere. Per questo motivo, ora come ora, userei uno
strumento pił raffinato, tipo nose
(http://somethingaboutorange.com/mrl/projects/nose/).

> Non ti saprei dire, ma per una situazione simile io ho intenzione di
> usare doctest (almeno fino a un certo punto).
> Se devi scrivere delle classi che verranno utilizzate da altre
> persone, o hai paura di dimenticarti qualcosa in futuro, le doctest
> sono molto comode e ti permettono di avere sia degli esempi che
> faranno capire molto bene al tuo cliente/collaboratori quello che
> scriverai, che dei test da utilizzare al volo.

Ho paura che i doctest siano un po' semplificati per questo tipo di
testing. Testando i db, di solito il setup/teardown delle test suite sono
molto importanti, e non mi sembra sia possibile un gran controllo con i
doctest.

Secondo me i doctest sono pił indicati quando gli oggetti sono del tutto
autocontenuti, non quando devi testare una frontiera dell'applicativo.

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python