Я создал custom django-admin commandsКак проверить пользовательские Джанго-администратора команды
Но, я не знаю, как проверить его в standard django tests
Я создал custom django-admin commandsКак проверить пользовательские Джанго-администратора команды
Но, я не знаю, как проверить его в standard django tests
Если вы используете какой-то инструмент покрытия было бы хорошо, чтобы вызвать его из кода с:
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.
Вы должны сделать свой фактический командный сценарий минимально возможным, так что это просто вызывает функцию в другом месте. Затем эту функцию можно протестировать с помощью модульных тестов или доктрин, как обычно.
Не уверен, что я согласитесь с этим. Если бы я мог это сделать, я, вероятно, не сделал бы это командой Django. Я просто запускаю его как программу python. Причина, по которой я делаю команды Django, - получить всю инфраструктуру Django. – Chuck
Ну, иногда вы не можете запускать его как программу python из-за проблем с импортом. –
Я согласен с Даниэлем в том, что фактический командный скрипт должен делать как можно меньше, но вы также можете проверить его непосредственно в модульном тесте Django, используя os.popen4
.
Изнутри вашего модульного теста вы можете иметь команду как
fin, fout = os.popen4('python manage.py yourcommand')
result = fout.read()
Вы можете проанализировать содержание результата, чтобы проверить, была ли ваша команда Django успешно.
не используют подпроцессы для такого рода тестирования и, конечно же, не используют os.popen4, если вы действительно хотите сделать это, вы будете использовать пакет подпроцесса. –
Примечание: Как покрыть тестирование https://docs.djangoproject.com/en/1.9/howto/custom-management-commands/#testing –