2010-07-27 16 views
9

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

क्या पाइथन के भीतर से py.test का उपयोग करने का कोई तरीका है, ताकि किसी को आईडीई से बाहर निकलने के लिए मजबूर नहीं किया जा सके? परीक्षण निश्चित रूप से एक अलग प्रक्रिया में नहीं चलना चाहिए।

उत्तर

18

मुझे लगता है कि अब मैं अपने ही सवाल का जवाब कर सकते हैं, यह बहुत सरल है:

import py 
py.test.cmdline.main(args) 

तब मैं इस मॉड्यूल चलाने के लिए और या एकीकृत डीबगर के साथ शुरू कर सकते हैं।

args, आदेश पंक्ति तर्क की सूची है, तो उदाहरण के केवल विशेष परीक्षण चलाने के लिए के लिए मैं की तरह कुछ का उपयोग कर सकते हैं: शायद तुम pycharm को एक कोशिश दे सकता है

args_str = "-k test_myfavorite" 
py.test.cmdline.main(args_str.split(" ")) 
1

मैंने ग्रहण के साथ प्रयास नहीं किया है, लेकिन जैसा कि related question में सुझाया गया था, py.test के साथ --pdb कमांड लाइन विकल्प का उपयोग करना संभव है। शायद इस तरह ग्रहण को कॉन्फ़िगर करना संभव है।

हालांकि, मानक import pdb;pdb.set_trace() को कॉल करना सीधे डीबगर को कॉल नहीं करेगा। सबसे पहले यह एक त्रुटि जारी करेगा जो बदले में डीबगर को सक्रिय करेगा। यह चीजों को अलग-अलग काम नहीं कर सकता है या नहीं।

+0

धन्यवाद, मैं '--pdb' स्विच के बारे में पता था। मुझे लगता है कि इस मामले में पीडीबी नियंत्रित है और py.test द्वारा शुरू किया गया है, जो ग्रहण के लिए काम नहीं करेगा (मैं चाहता हूं कि मेरे चलने वाले ग्रहण को डिबगिंग पर ले जाएं)। सुझाव के लिए – nikow

1

यह py.test के साथ सीधे एकीकरण है (मैं इसे काम पर उपयोग करता हूं) और डीबगर पूरी तरह से चलता है।

+0

धन्यवाद। हाल ही में मुझे PyCharm 2.5 का उपयोग करने का मौका मिला, और मैं मानता हूं कि यह बहुत अच्छी तरह से काम करता है। अभी मैं PyCharm और Aptana स्टूडियो के बीच विभाजित हूँ। – nikow

+0

@nikow: मैंने अपताना का उपयोग शुरू किया ... मैंने इसे नफरत भी की, अगर आप पिचर्म से परिचित हो जाते हैं तो आप phpstorm, rubymine, intellij के लिए भी जा सकते हैं ... ये सभी आईडीई जेटब्रेन से हैं, और एक ही संरचना है, शॉर्टकट्स ... तो यह निश्चित रूप से लायक है। मैं ग्रहण प्रशंसक बनने के लिए उपयोग करता हूं, लेकिन मुझे पता है कि जेटब्रेन मुझे मिला है :) –

+0

PyCharm के लिए +1। मैं PHP के लिए Aptana का उपयोग कर रहा था लेकिन PyCharm का उपयोग करने के बाद मैं धीरे-धीरे जेटब्रेन के उत्पादों पर स्विच करने जा रहा हूं –

3

यह अब pytest द्वारा समर्थित और दस्तावेज में अच्छी तरह से here वर्णन किया गया है।

0

तुम बस py.test --pdb चला सकते हैं अगर आप सिर्फ एक डिबगर करना चाहते हैं और आईडीई की जरूरत नहीं है

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