Come testare i comandi personalizzati django-admin
-
18-09-2019 - |
Domanda
personalizzato django-admin comandi
Ma, non so come verificare nel test Django standard
Soluzione
Se stai usando qualche strumento di copertura di che sarebbe bene chiamare dal codice con:
from django.core.management import call_command
from django.test import TestCase
class CommandsTestCase(TestCase):
def test_mycommand(self):
" Test my custom command."
args = []
opts = {}
call_command('mycommand', *args, **opts)
# Some Asserts.
Altri suggerimenti
Si dovrebbe fare lo script comando effettivo minimo possibile, in modo che si chiama solo una funzione altrove. La funzione può essere testata tramite test unitari o doctest come normale.
si può vedere in github.com esempio vedi qui
def test_command_style(self):
out = StringIO()
management.call_command('dance', style='Jive', stdout=out)
self.assertEquals(out.getvalue(),
"I don't feel like dancing Jive.")
Una semplice alternativa al parsing stdout è quello di rendere la vostra uscita di comando di gestione con un codice di errore se non viene eseguito correttamente, per esempio usando sys.exit (1).
È possibile prendere questo in un test con:
with self.assertRaises(SystemExit):
call_command('mycommand')
Sono d'accordo con Daniel che lo script comando effettivo dovrebbe fare il minimo possibile, ma si può anche provare direttamente in una prova di unità Django usando os.popen4
.
Da all'interno del tuo test di unità si può avere un comando come
fin, fout = os.popen4('python manage.py yourcommand')
result = fout.read()
È quindi possibile analizzare il contenuto di seguito per verificare se il vostro comando Django ha avuto successo.