Pergunta

eu criei comandos personalizados de django-admin

Mas, eu não sei como testá -lo em Testes padrão de Django

Foi útil?

Solução

Se você estiver usando alguma ferramenta de cobertura, seria bom chamá -lo do código com:

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.

Outras dicas

Você deve tornar o seu script de comando real o mínimo possível, para que ele apenas chama uma função em outro lugar. A função pode ser testada por meio de testes de unidade ou médicos normalmente.

você pode ver no exemplo github.comVeja aqui

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.")

Uma alternativa simples a Analisando o stdout é fazer com que seu comando de gerenciamento sai com um código de erro se ele não funcionar com sucesso, por exemplo, usando sys.exit (1).

Você pode fazer isso em um teste com:

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

Concordo com Daniel que o script de comando real deve fazer o mínimo possível, mas você também pode testá -lo diretamente em um teste de unidade Django usando os.popen4.

De dentro do seu teste de unidade, você pode ter um comando como

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

Você pode analisar o conteúdo do resultado para testar se o seu comando django foi bem -sucedido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top