2012-03-02 10 views
14

Mamy kilka poleceń w naszej witrynie Django, niektóre z nich są administracyjne, a inne działają na zadaniach cron, których nie mogę wymyślić. Są one dość dużo wyglądać następująco:Uruchom komendę zarządzania Python/Django z 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 

I mam pewne testy, które wyglądać tak:

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. 

W moim teście (gdzie mam komentarz) Chciałbym uruchomić mój NoArgsCommand aby zobaczyć, co stanie się z moim nowym użytkownikiem. Nie mogę znaleźć żadnej dokumentacji ani przykładów, jak to osiągnąć. Zauważ też, że moim środowiskiem testowym jest SQLLite DB, który tworzę od zera w pamięci, ładuję niektóre urządzenia i obiekty do moich testów, tak jakbym chciał ustawić dane w prawdziwym DB, po prostu uruchom moje polecenie z linii poleceń, nie mogę, jest to zbyt czasochłonne. Wszelkie pomysły będą mile widziane.

Odpowiedz

42

Django documentation on management commands może pomóc, opisuje jak wywoływać je z kodu Pythona.

Zasadniczo trzeba coś takiego:

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

RTFM, Doh! Dziękuję, nie wiedziałem, że to nawet istniało. – scoopseven

+0

Zdarza się nam wszystkim, szczególnie w piątki :) I oczywiście, nie ma za co! – kgr

+0

Dzięki! Próbowałem uruchomić testowanie jednostki z Visual Studio i nie mogłem go uzyskać, dopóki nie podążyłem za twoim linkiem referencyjnym. – TurboGus

Powiązane problemy