È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top