2012-03-25 26 views
6

Esiste una particolare struttura di directory utilizzata per TDD in Python?Struttura directory TDD Python

Tutorial parlare del contenuto delle prove, ma non dove metterli

Da rovistando Python Koan, sospetto che la sua qualcosa come:

/project/main_program.py   # This has main method, starts program 
/project/classes/<many classes>.py 
/project/main_test.py   # This simply directs unittest onto tests, can use parameters fed to it to customise tests for environment 
/project/tests/<many tests>.py 

# to run tests, type "python -m unittest main_test.py" (into a terminal) 
# to run program, type "python main_program.py" 

sto facendo questo diritto ? C'è una buona guida che insegna la gerarchia delle directory per TDD? Ho sentito che avere file misti di codice e test è sbagliato.

Riferimenti:

+0

Per i principianti: Se si dispone della struttura come mostrato sopra, quindi per testare /project/classes/codey.py con /project/tests/testy.py si dovrebbe "importare il codice dalle classi" scritto in testy.py così che sa dove guardare. Durante l'importazione, Python cerca. Quindi, se avessi /cat/sat/on/sometest.py e /cat/trolled/dog/somecode.py allora "importare il codice di sicurezza da cat.trolled.dog" entrerebbe nel test. – xxjjnn

risposta

4

Basato sul tuo proje ct, Qualunque sia lo stile si lascia

  • codice di implementazione separato dal codice di test
  • creare nuovi test facilmente
  • eseguire tutti i test in una sola operazione (ad esempio per i test di regressione)

I python koans/etc sono solo linee guida. Alla fine, vuoi sostenere DRY con i tuoi unittests ed essere in grado di testare facilmente, manutenzionalmente e intuitivamente. Alla fine spetta a te decidere la struttura della tua cartella.

Mi sento come se ti concentri troppo sulla soddisfazione della convenzione invece di soddisfare il tuo progetto.

+1

Che bello non importa =) Pensa fuori ... hey, cosa hai fatto con la scatola Python? – xxjjnn

+0

È ancora una domanda valida, e alla fine viene richiesta su ogni forum di linguaggio prog. Rif: http://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application per ulteriori note. –

1

Esistono due opzioni di base: in una directory "test" (o "tests") di livello superiore o in directory "test" all'interno del pacchetto ad ogni livello. Il primo ha il vantaggio di semplificare l'esecuzione di entrambi i test unitari e di altri test in modo coerente. Quest'ultimo ha il vantaggio di semplificare l'esecuzione dei test rispetto alla versione installata del codice ed è raccomandato da this blog post, che descrive la struttura di base che funziona bene per i progetti Python.

Alla fine della giornata, l'importante è renderli facili da trovare ed eseguire.