2012-10-19 20 views
8

मैं एक Django आवेदन पर काम कर रहा हूँ। हम अपने मोंगो डेटाबेस में कतार लिखने के लिए अजवाइन का उपयोग कर रहे हैं। मैं एक समारोह के लिए एक कार्यात्मक परीक्षण (सेलेनियम का उपयोग कर) लिखने की कोशिश कर रहा हूं जो अजवाइन में कुछ कतार देता है।मैं अपने कार्यात्मक परीक्षणों के लिए परीक्षण डेटाबेस में लिखने के लिए django अजवाइन कैसे प्राप्त करूं?

समस्या यह है कि सेलरी परीक्षण डेटाबेस के बजाय मुख्य मोंगो डेटाबेस को लिखती है। परीक्षण डेटाबेस में लिखने वाले अजवाइन के उदाहरण के साथ काम करने के लिए मैं अपने कार्यात्मक परीक्षण कैसे स्थापित कर सकता हूं?

हम 'django_nose.NoseTestSuiteRunner' का उपयोग कर रहे हैं हमारे TEST_RUNNER के रूप में।

अद्यतन:

मैं कैसे परीक्षण के लिए अजवाइन का एक और उदाहरण का उपयोग करने के यह पता लगाने की नहीं कर पाए हैं, लेकिन मैं कार्यात्मक परीक्षण के लिए अजवाइन बायपास करने के लिए एक रास्ता मिल गया है।

मेरी settings.py में:

FUNC_TEST_COMMAND=['functional'] 
func_test_command = filter(lambda element: element in FUNC_TEST_COMMAND, sys.argv) 
if len(func_test_command) > 0: 
    CELERY_ALWAYS_EAGER = True 

यह जब कार्यात्मक परीक्षण सूट चल रहा एक संदेश कतार के माध्यम से कुछ भी भेजे बिना एक AsyncResult के व्यवहार की नकल करता। (अधिक जानकारी के लिए http://celery.readthedocs.org/en/2.4/configuration.html#celery-always-eager देखें।)

यह समाधान संभवतः कार्यात्मक परीक्षणों के लिए आदर्श नहीं है, क्योंकि यह एप्लिकेशन परतों में से एक को काटता है।

उत्तर

0

मैं सुझाव दूंगा कि आप LiveServerTestCase पर एक नज़र डालें, यदि आप कार्यात्मक परीक्षण चलाने के लिए स्वचालित परीक्षण क्लाइंट का उपयोग करते हैं।

फिर सुनिश्चित करें कि आपके पास अपने परीक्षण चलाने वाले एक अलग सेटिंग्स मॉड्यूल हैं जो आपके project's database for transport का उपयोग करने के लिए सेलेरी को सही तरीके से कॉन्फ़िगर करते हैं।

1

CELERY_ALWAYS_EAGER = True का उपयोग करके वास्तव में सेलेरी की असीमित प्रक्रिया को बाईपास करता है। परीक्षण डेटाबेस में लिखने के लिए, आपको परीक्षण डेटाबेस में कनेक्शन सेटिंग्स का उपयोग करके अपना सेलरीड वर्कर शुरू करना होगा।