2012-03-02 22 views
14

से पाइथन/Django प्रबंधन कमांड चलाएं हमारे पास हमारे Django साइट में कमांड का एक समूह है, कुछ प्रशासनिक हैं और कुछ जो क्रॉन नौकरियों पर चलते हैं जिन्हें मैं परीक्षण नहीं कर सकता हूं। वे इस तरह काफी देखो:यूनिटटेस्ट/वेबटेस्ट

# 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 डीबी है जिसे मैं स्मृति में स्क्रैच से बनाता हूं, कुछ फिक्स्चर और ऑब्जेक्ट्स लोड करता हूं और अपने परीक्षण चलाता हूं, इसलिए जितना मैं एक वास्तविक डीबी में डेटा सेट करना चाहता हूं, तो बस मेरा रन चलाएं कमांड लाइन से कमांड, मैं नहीं कर सकता, यह बहुत समय लेने वाला है। किसी भी विचार की बहुत प्रशंसा की जाएगी।

उत्तर

42

Django documentation on management commands मदद कर सकता है, यह वर्णन करता है कि उन्हें पायथन कोड से कैसे कॉल करें।

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

RTFM, doh:

मूल रूप से आप कुछ इस तरह की जरूरत है! धन्यवाद, मुझे पता नहीं था कि यहां तक ​​कि अस्तित्व में था। – scoopseven

+0

हम सभी को, विशेष रूप से शुक्रवार को होता है :) और निश्चित रूप से, आपका स्वागत है! – kgr

+0

धन्यवाद! मैं विजुअल स्टूडियो से अपना यूनिट परीक्षण चलाने की कोशिश कर रहा हूं और जब तक मैंने आपके संदर्भ लिंक का पालन नहीं किया तब तक इसे प्राप्त नहीं किया जा सका। – TurboGus