Вопрос

я создал Пользовательские команды django-admin

Но я не знаю, как проверить это в Стандартные тесты Джанго

Это было полезно?

Решение

Если вы используете какой -то инструмент покрытия, было бы хорошо назвать его из кода:

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.

Другие советы

Вы должны сделать свой фактический сценарий команды минимальным возможным, чтобы он просто вызовал функцию в другом месте. Затем функцию можно проверить с помощью модульных тестов или Doctests как обычно.

Вы можете увидеть в примере github.comглянь сюда

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

Простая альтернатива Расположение Stdout это сделать вашу команду управления с помощью кода ошибки, если она не работает успешно, например, используя sys.exit (1).

Вы можете поймать это в тесте с:

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

Я согласен с Даниэлем, что фактический командный скрипт должен сделать минимальный возможный, но вы также можете проверить его непосредственно в модульном тесте Django, используя os.popen4.

Из вашего модульного теста у вас может быть такая команда, как

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

Затем вы можете проанализировать содержимое результата, чтобы проверить, была ли ваша команда Django успешной.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top