Как проверить пользовательские команды django-admin
-
18-09-2019 - |
Вопрос
я создал Пользовательские команды 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 успешной.