nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Struttura della directory e Doctest ... oppure pyunit?

Von: nickooooola (nick83ola@gmail.com) [Profil]
Datum: 23.06.2008 13:52
Message-ID: <7513a38c-8724-4cf7-b67d-19219fe05eb3@c58g2000hsc.googlegroups.com>
Newsgroup: it.comp.lang.python
Salve
(premettendo che sono alle prime armi con python o quasi)

vorrei realizzare un simulatore per i microcontrollori pic in python,
sulla scia di gpsim, per imparare
appunto a gestire con python progetti più grandi del semplice script
di shell e imparare
ad impostare un progetto  vero e proprio.

Mi piacerebbe usare doctest perchè l'ho usato in passato e scrivere i
test e la documentazione
prima di scrivere ogni file mi aiuta moltissimo a chiarirmi
ulteriormente le idee su quello che il file in questione deve fare e
su quli saranno i problemi. inoltre mi ritrovo con il codice
documentato prima ancora che il codice sia scritto!!!

Tuttavia inserire il test all'interno della docstring della classe/
funzione che sto scrivendo
è brutto (nel senso che tipicamente il testing+ documentazione è molto
lungo) e mi piacerebbe
poter inserire il testing in un file a parte.
1) però a questo punto il mio modulo rimane senza documentazione!!!
oppure devo ripetere
quello che ho già scritto nel  test anche nella funzione!! e se
devo cambiare qualcosa? devo
modificare 2 file!!!
2) dove metto i file di test? ho pensato a una struttura delle
directory così:

mioprogetto/
-- runtest.py
-- mioprogetto.py
-- test/
---- mioprogetto.test
-- modulo1/
---- __init__.py
---- main.py
---- test/
------ main.test
-- modulo2/
---- __init__.py
---- main.py
----submodulo1/
------ __init__.py
------ main.py
------ test/
--------main.test
----test/
------main.test

così in runtest in pratica gli faccio esplorare tutte le
sottodirectory e
creare suite per unittest con doctest.DocFileSuite
http://docs.python.org/lib/doctest-unittest-api.html

la cosa bella è che se mi servisse il modulo2 in un altro progetto
potrei semplicemente copiare la cartella modulo2 e
mi porterei dietro tuti i test (e la documentazione)
il problema è con gli import, nel senso che non ho capito bene da che
posizione vengono
eseguite le istruzioni contenute nei file *.test, cioè se do un
import main
quale main.py mi carica?

per progetti nidificati è meglio usare pyunit?
però perderei al documentazione.

ho letto qui che altri hanno una struttura delle directory così:

mioprogetto/
-- runtest.py
-- mioprogetto.py
-- modulo1/
---- __init__.py
---- main.py
-- modulo2/
---- __init__.py
---- main.py
----submodulo1/
------ __init__.py
------ main.py
-- test/
----__init__.py
---- mioprogetto.py
---- mioprogetto_modulo1_main.py
---- mioprogetto_modulo2_main.py
---- mioprogetto_modulo2_submodulo1_main.py

è comoda per quanto riguarda il problema degli import penso
e anche per essere esclusa dall'installazione ma
non tiene separato il codice di test dei singoli moduli!
inoltre se il progetto cresce cresce anche il numero di files in
questa directory...

3) poichè la parte di simulazione deve essere "veloce" la mia idea era
di svilupparla
prima in python e poi sostituire mano a mano i moduli più usati dal
codice in moduli C/C++
se io uso la struttura di prima con i vari sottomoduli funziona anche
se le varie sottocartelle
contengono file c?
mi spiego meglio: magari ho realizaato il programma sopra e poi mi
sono reso conto
che devo scrivere modulo1 in c (o c++). per questioni di performance.
ho visto che esiste un progetto chiamato swig che fa questo.
io posso semplicemente scrivere il mio file mail.c, compilarlo con
swig e mettere il file compilato nella
cartella modulo1 e il resto del programma, e i test funzionano come
prima?
conviene separare la parte C del programma da quella python?
oppure è possibile passare da python a un linguaggio compilato in
maniera trasparente?

4) doctest è compatibile con docutils? c'è un modo per raccogliere
tutti i miei file di test e
generare una documentazione (html, pdf)?

Grazie per la pazienza nel leggere il mio lungo messaggio

se avete esempi di progetti con sottomoduli che utilizzano pyunit/
doctest e parti in c inviate pure!!

[ Auf dieses Posting antworten ]