मैं अपने पायथन प्रोग्राम की इकाई परीक्षण के लिए py.test का उपयोग कर रहा हूं। मैं अपने टेस्ट कोड को पाइथन डीबगर के साथ सामान्य तरीके से डीबग करना चाहता हूं (जिसके द्वारा मुझे कोड में pdb.set_trace() का मतलब है) लेकिन मैं इसे काम नहीं कर सकता।क्या मैं किसी भी तरह py.test का उपयोग करते समय पाइथन डीबगर के साथ डीबग कर सकता हूं?
कोड में pdb.set_trace() डालना काम नहीं करता है (IOError उठाता है: आउटपुट कैप्चर करते समय stdin से पढ़ना)। मैंने विकल्प - pdb के साथ py.test चलाने का भी प्रयास किया है, लेकिन अगर मैं यह जानना चाहता हूं कि मेरे दावे से पहले क्या होता है तो यह चाल नहीं लगता है। जब कोई दावा विफल हो जाता है तो यह टूट जाता है, और उस रेखा से आगे बढ़ने का अर्थ प्रोग्राम को समाप्त करना है।
क्या कोई डिबगिंग पाने का तरीका जानता है, या डिबगिंग और py.test सिर्फ एक साथ रहने का मतलब नहीं है?
पीटर, आपके सुझावों के लिए धन्यवाद। पायथन-एम पीडीबी विकल्प मुझे स्क्रिप्ट के माध्यम से चलता है लेकिन कार्यों को कॉल नहीं करता है, इसलिए मेरे पायथन विकास के लिए उपयोगी है, लेकिन मैं नहीं देखता कि मैं यह कैसे काम कर सकता हूं। मैंने --pdb विकल्प का उल्लेख किया है, लेकिन जब तक कोई इसका उपयोग नहीं कर सकता है, तो मैं इसके साथ आगे नहीं जा सकता। – Joel
मैं पीडीबी पर मैनुअल पढ़ने और कीस्ट्रोक सीखने का सुझाव देता हूं। पीडीबी उस फंक्शन को प्रिंट करेगा जो अगले निष्पादित करेगा। यदि आप "एस" टाइप करते हैं, तो आप उस फ़ंक्शन में कदम उठाएंगे। यदि आप "n" टाइप करते हैं, जो डिफ़ॉल्ट है, तो आप केवल कोड की अगली पंक्ति पर जाते हैं।जब आप अपने "मुख्य" दिनचर्या में कदम उठाना चाहते हैं तो यह बहुत संभव है कि आप "एस" के बजाय "n" मार रहे हों। –
ऐसा नहीं है कि py.test कैसे काम करता है। Py.test के लिए छोटे लेकिन वैध परीक्षण कोड: def test_arithmetic: 2 + 2 == 4 पर एक इकाई परीक्षण करने के लिए पर्याप्त है। कोई "मुख्य" दिनचर्या, केवल एक फ़ंक्शन जो "test_" से शुरू होता है। यदि इसे सामान्य पायथन के साथ चलाया जाता है, तो यह केवल test_arithmetic को परिभाषित करेगा, इसे चलाने के लिए नहीं। लेकिन py.test test_ के साथ शुरू होने वाले कार्यों को पाता है और उन्हें मेरे लिए चलाता है, असफल आवेषण आदि का ख्याल रखता है। – Joel