¿Fue útil?

Solución

Si está utilizando alguna herramienta de cobertura que sería bueno llamarlo desde el código 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.

Otros consejos

Usted debe hacer su secuencia de comandos real al mínimo posible, de modo que sólo llama a una función en otro lugar. La función puede entonces ser probado por medio de pruebas de unidad o prueba unitaria como normal.

se puede ver en el ejemplo github.com ver aquí

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 alternativa sencilla a analizar la salida estándar es hacer que su salida de comandos de gestión con un código de error si no se ejecuta correctamente, por ejemplo usando sys.exit (1).

Se puede tomar esto en una prueba con:

    with self.assertRaises(SystemExit):
        call_command('mycommand')

Estoy de acuerdo con Daniel que la secuencia de comandos real debe hacer lo mínimo posible, pero también se puede probar directamente en una unidad de prueba usando Django os.popen4.

Desde el interior de su unidad de prueba que puede tener un comando como

fin, fout = os.popen4('python manage.py yourcommand')
result = fout.read()

A continuación, puede analizar el contenido de resultado para comprobar si su comando Django fue un éxito.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top