2012-06-05 15 views
9

Vorrei testare la mia piccola applicazione, che tengo in un pacchetto separato. In questo momento ho creato una directory "test_project", ho creato un progetto di test e sto usando il manage.py del progetto per eseguire i test. Ma continuo a chiedermi: c'è un metodo migliore? È possibile avviare test di una singola app, magari con alcune configurazioni di default (come il database sqlite)?Come testare una singola applicazione (non un progetto) in Django?

risposta

1

È possibile eseguire test di una singola applicazione standalone, senza creare un progetto di test Django a tale scopo. Un modo per farlo è creare un runtests.py nella directory principale della tua app che configura le impostazioni di Django ed esegue ./manage.py test your_app in modo programmatico. Un esempio di runtests.py è di proprietà di Django: runtests.py (documentation).

Django proprio runtests.py è un buon riferimento ma lo trovo contorto per la maggior parte dei casi.Qui di seguito sono un paio di esempi alternativi:

+0

Hai il mio upvote e l'ho contrassegnato come risposta accettata. Mi piacerebbe davvero che tu aggiungessi informazioni, dal momento che la versione di Django che la cosa '' runtests.py'' è supportata. È nuovo? – dotz

+0

@dotz, questa è una domanda molto interessante, una non sapevo la risposta, ma non potevo resistere a cercarla. Per quanto posso vedere, 'runtests.py' di Django è stato creato nel 2005 ed è disponibile dalla v1.0. Ecco il commit originale: https://github.com/django/django/commit/daf8467b37f7aaae0b463b40a2c9d98f1f53c556#diff-bf0d7f89b37ba018fb5c5b2833b37dd3 –

0

Naturalmente si può di prova le parti Python con un autonomo unittest se non è necessario alcun dipendenze Django

ambiente Una Django richiede atleast un settings.py e manage.py file. Puoi configurare solo quelli essenziali e UnitTest la tua app con manage.py. Dovresti vedere un progetto come ambiente di runtime Django, non c'è Django senza di esso. Probabilmente puoi imitare le impostazioni ma tbh staresti creando più hack che semplicità.

5

Se si utilizza il naso è possibile eseguire i test di una singola app.

python manage.py test app.tests:TestClassHere

come per testare una singola applicazione. Ho appena seguito la convenzione che altri grandi progetti di Django fanno, ed è esattamente quello che stai facendo. Creare una directory test_project.

https://bitbucket.org/jespern/django-piston/src/7c90898072ce/tests/test_project

Immagino che se è abbastanza buono per alcuni dei più grandi Django applicazioni innesto è abbastanza buono per me.

+0

Grazie, per un tempo molto lungo questa è stata la risposta accettata come è stato il migliore. Attualmente penso che questo di Dario sia migliore. Grazie per essere la risposta accettata per circa 5 anni o giù di lì. – dotz

5

Scrivendo questo giù perché io non lo vedo qui ancora

From the docs

Se la struttura di Django simile a questa come dovrebbe:

Project dir/ 
    /myapp 
    /myotherapp 
    /myproject 

Django permette di eseguire prova da solo "myotherapp" eseguendo:

./manage.py test myotherapp/ 

Questo eseguirà tutti i test sotto "myotherapp", mentre

./manage.py test 

verrà eseguito tutti i test nella directory progetti.

+0

Questa dovrebbe essere la risposta selezionata –

Problemi correlati