2012-03-02 1 views
14

У нас есть команда команд на нашем сайте Django, некоторые из которых являются административными, а некоторые из которых выполняются на заданиях cron, которые я не могу понять, как тестировать. Они в значительной степени выглядеть следующим образом:Выполнение команды управления Python/Django с помощью UnitTest/WebTest

# Saved in file /app/management/commands/some_command.py 
# Usage: python manage.py some_command 
from django.core.management.base import NoArgsCommand 
class Command(NoArgsCommand): 
    def handle_noargs(self, **options): 
     # Do something useful 

И у меня есть несколько тестов, которые выглядят следующим образом:

import unittest 
from django.test import TestCase 
from django_webtest import WebTest 

class SomeTest(WebTest): 
    fixtures = ['testdata.json'] 

    def setUp(self): 
     self.open_in_browser = False 
     # Set up some objects 

    def test_registration(self): 
     response = self.client.get('/register/') 
     self.assertEqual(response.status_code, 200) 
     form = self.app.get('/register/').forms[1] 
     # Set up the form 
     response = form.submit() 
     self.assertContains(response, 'You are Registered.') 
     if self.open_in_browser: 
      response.showbrowser() 

     # Here I'd like to run some_command to see the how it affects my new user. 

В моем тесте (где у меня есть комментарий) Я хотел бы, чтобы запустить свой NoArgsCommand чтобы узнать, что произойдет с моим новым пользователем. Я не могу найти документацию или примеры того, как это сделать. Также обратите внимание, что моя тестовая среда - это SQLlite DB, которую я создаю с нуля в памяти, загружаю некоторые приборы и объекты в свои тесты и запускаю их, так что я хотел бы настроить данные в реальной БД, а затем просто запустить мои команды из командной строки, я не могу, это слишком много времени. Любые идеи очень приветствуются.

ответ

42

Django documentation on management commands может помочь, он описывает, как назвать их из кода python.

В основном вам нужно что-то вроде этого:

from django.core import management 
management.call_command(...) 
+0

RTFM, DOH! Спасибо, я не знал, что это даже существовало. – scoopseven

+0

Случается всем нам, особенно по пятницам :) И, конечно же, пожалуйста! – kgr

+0

Спасибо! Я пытался запустить модульное тестирование из Visual Studio и не смог получить его, пока не выполнил вашу ссылку. – TurboGus

 Смежные вопросы

  • Нет связанных вопросов^_^