2009-08-05 16 views
30

जब मैं ./manage.py test के साथ परीक्षण चलाता हूं, जो भी मैं मानक आउटपुट को print के माध्यम से भेजता हूं, दिखाता नहीं है। जब परीक्षण विफल हो जाते हैं, तो मुझे प्रति विफल परीक्षण "स्टडआउट" ब्लॉक दिखाई देता है, इसलिए मुझे लगता है कि Django इसे जाल (लेकिन परीक्षण पास होने पर इसे प्रदर्शित नहीं करता है)।Django परीक्षण चलाते समय मैं stdout कैसे देख सकता हूं?

+0

में

TEST_RUNNER = "django_nose.NoseTestSuiteRunner" 

है '-s' विकल्प –

+1

आप आप के रूप में सही है, क्योंकि यह है जवाब देने के मालिक हैं निशान चाहिए जोड़ें। – Catskul

उत्तर

30

TEST_RUNNERsettings.py में चेक किया गया, यह एक परियोजना-विशिष्ट धावक का उपयोग कर रहा है जो नाक को बुलाता है। नाक stdout पर कब्जा करने से रोकने के लिए -s का विकल्प है, लेकिन अगर मैं चलाएँ:

./manage.py test -s

manage.py यह पहली बार कब्जा है और एक "ऐसा कोई विकल्प" त्रुटि फेंकता है। manage.py के लिए मदद यह उल्लेख नहीं है, लेकिन मैंने पाया है कि अगर मैं चलाएँ:

./manage.py test -- -s

यह -s पर ध्यान नहीं देता है और मुझे कस्टम धावक के पक्ष में यह कब्जा, नाक के लिए यह एक समस्या के बिना गुजर देता है।

+2

क्योंकि मैं contrib.sites ढांचे का उपयोग कर रहा हूं, मैं अपने परीक्षणों के लिए सेटिंग्स सेट करता हूं। जब मैं ऐसा करता हूं, तो ध्वज कार्यों को अपेक्षित के रूप में, और दूसरे में गुज़रने से पहले - एक ओएसईआरर फेंकने से पहले (ऐसी कोई फाइल-एस नहीं)। – ken

+2

सिर्फ रिकॉर्ड के लिए। यदि आपके पास dSTango_south इंस्टॉल किया गया है तो INSTALLED_APPS __after__ django_nose में यह आपको नाक (जैसे -s) के विकल्प देने नहीं देगा। आपको INSTALLED_APPS में दक्षिण __before__ django_nose डालना होगा। यह मेरे साथ मुद्दा था – yakxxx

+0

विचित्र रूप से यह मेरे लिए 'प्रिंट (...) 'के साथ काम करता प्रतीत होता है, लेकिन' प्रिंट 'के साथ सुंदर प्रिंट का आउटपुट।पप्रिंट (...) 'कंसोल में नहीं दिखता है। –

4

आपके पास शायद कुछ इंटरमीडिएट टेस्ट धावक हैं, जैसे नाक, अवरोधन और स्टडआउट संग्रह करना। या तो Django परीक्षण सीधे चलाना या इसके बजाय stderr लिखने का प्रयास करें।

+0

आप सही थे। Django परीक्षणों को चलाने से सीधे काम नहीं होता है क्योंकि कस्टम रनर की बहुत सारी सेटिंग्स होती हैं, लेकिन मैं समस्या का पता लगाने और इसे ठीक करने में सक्षम था। अब यह मेरा पहला सवाल है, तो क्या उपरोक्त समाधान को शामिल करने के लिए प्रश्न को संपादित करना ठीक है? धन्यवाद! – hsribei

+0

सबसे अच्छा बात यह है कि आप अपना उत्तर पोस्ट करें। –

+0

बस किया। धन्यवाद! – hsribei

32

हाँ, यह समस्या NoseTestSuiteRunner के कारण है। -- -s जोड़ें एक मुश्किल लेकिन सबसे अच्छा समाधान नहीं है। settings.py में अनुवर्ती लाइनों को जोड़ने के लिए प्रयास करें:

NOSE_ARGS = ['--nocapture', 
      '--nologcapture',] 

कौन सा मेरी समस्याओं को हल किया।

+4

यह सही उत्तर है। '- -s' विधि अवांछित साइड इफेक्ट्स का कारण बनती है। – adam

0

सभी प्रासंगिक पैकेज (Django==1.11.2, django-nose==1.4.5 और nose==1.3.7) यह जब अपने परीक्षण चलाने के --nocapture फ्लैग जोड़ने के लिए पर्याप्त है के वर्तमान संस्करण का उपयोग करना। इस प्रकार एक साधारण

./manage.py test --nocapture 

पर्याप्त होगा।

निश्चित रूप से दी है कि आप अपने settings.py

संबंधित मुद्दे