2012-01-26 22 views
51

में छोड़ नहीं करता है मैं परीक्षण का एक सूट (.py फ़ाइलें) nosetests का उपयोग कर चल रहा हूँ। क्लासिकpdb.set_trace() जमे हुए nosetests के कारण, डिबगर

import pdb; pdb.set_trace() 

नोसेटेट रन का उपयोग कभी पूरा नहीं होता है। यह सिर्फ सही जहां ब्रेकप्वाइंट स्थापित किया गया है लटका हुआ है, लेकिन pdb डीबगर में कभी नहीं चला जाता है।

कोई भी विचार क्यों यह होगा

? मैं कोई लाभ नहीं हुआ विभिन्न स्थानों की एक संख्या (अन्य परीक्षण काम करता है, अन्य फ़ाइलों) को ब्रेकप्वाइंट चलती की कोशिश की है।

उत्तर

55

भागो नाक और आप pdb को देखने के लिए सक्षम हो जाएगा सामान्य रूप से डीबगर के साथ तत्काल और बातचीत करें।

कमांडलाइन मतलब यह है कि का उपयोग कर: -

python manage.py test -s [other-opts-and-args] 
+0

यकीन है कि पर्याप्त! धन्यवाद माइक! कोई विकल्प नहीं पता था, यह सिर्फ सब कुछ – Bodhi

+3

निगल होगा तहत [nosetests] एक लाइन 'nocapture = 1' जोड़ने अगर तुम setup.cfg है –

30

नाक उत्पादन पर कब्जा करने और इसे पुनः निर्देशित किया गया है। तो, ब्रेकपॉइंट मारा जाता है, लेकिन आप इसे नहीं देखते हैं। आपको आउटपुट रीडायरेक्शन को बंद करने की आवश्यकता है ताकि डीबग आउटपुट स्क्रीन पर दिखाई दे।

नाक आप के लिए ऐसा कर सकते हैं, अगर आप का उपयोग करें:

from nose.tools import set_trace; set_trace() 

के बजाय: -s/--nocapture विकल्प के साथ

import pdb;pdb.set_trace() 
+1

धन्यवाद! अच्छा विकल्प – Bodhi

+0

लेकिन इसकी मुझे दे गंभीर त्रुटि BdbQuit – CrazyGeek

0

मेरे मामले ध्वज में झंडा -s/- nocapture, अभी भी इसे सुलझाने और pdb में संकलक ड्रॉप नहीं किया।

एक अन्य कारण यह है कि आप इस पर गौर कर सकता है आप अपने परीक्षण के हिस्से के रूप में इस तरह के MySQL के रूप में एक डेटाबेस का उपयोग कर रहे हैं कि यह एक और एक साथ प्रक्रिया द्वारा बंद नहीं है,। मेरे मामले में, मैं एसक्यूएल कीमिया के माध्यम से MySQL डेटाबेस क्वेरी करने के लिए एक अजगर खोल शुरू कर दिया था और कहा कि टेबल बंद कर दिया था। नतीजतन, मेरी नाक परीक्षण लटक रहे थे - दौड़ नहीं/बाहर निकलना।

मैं अजगर प्रक्रियाओं जो टेबल तक ताला लगा रहे थे मारे गए और नाक

> $ ps auxww सूँघने ऊपर वापस था | grep पायथन | अजीब '{प्रिंट $ 2}' | sudo xargs मारने -9