2010-06-25 9 views
6

का अच्छा परीक्षण-कवरेज कैसे सुनिश्चित कर सकता हूं मेरे पास एक बहुत बड़ा परीक्षण सूट वाला एक बहुत बड़ा पायथन परियोजना है। हाल ही में हमने अपने परीक्षण-कवरेज की गुणवत्ता को मापने का फैसला किया है।मैं अपने बड़े पायथन प्रोजेक्ट

मैं परीक्षण कवरेज रिपोर्ट पीढ़ी को स्वचालित करने के लिए एक टूल की तलाश में हूं। आदर्श रूप में मैं आकर्षक, रिपोर्ट पढ़ने में आसान होना चाहता हूं लेकिन अगर मैं इसे जल्दी से काम कर सकता हूं तो मैं कम आकर्षक रिपोर्ट के लिए बसूंगा।

मैंने नाक की कोशिश की है, जो पर्याप्त नहीं है: यह वितरित/setuptools 'नेमस्पेस पैकेज सुविधा के साथ असंगत है। दुर्भाग्य से नाक कवरेज हमारे लिए कभी काम नहीं करेगा क्योंकि हम इस सुविधा का प्रचुर उपयोग करते हैं। यह एक वास्तविक शर्म की बात है क्योंकि नाक हडसन (ज्यादातर)

वैकल्पिक रूप से, मैंने सुना है कि एक्लिप्स में पाइथन कवरेज विश्लेषण करने का एक तरीका है, लेकिन मैंने काफी लॉक डाउन नहीं किया है सही तकनीक।

कोई भी सुझाव आपका स्वागत है!

FYI करें हम अजगर 2.4.4 Windows XP 32 बिट पर उपयोग

+0

मैंने इस समस्या को पुन: उत्पन्न करने की कोशिश की और नहीं कर सका। सलीम, अगर आप इसके साथ मदद चाहते हैं, तो मुझे एक लाइन छोड़ दो। –

उत्तर

4

आप coverage.py उपयोग करने की कोशिश की है? यह "नाक कवरेज" का पालन करता है, लेकिन यदि आपको आवश्यकता हो तो नाक के बाहर पूरी तरह से अच्छी तरह से चलाया जा सकता है।

आप के साथ अपने परीक्षण चलाते हैं (काल्पनिक रूप से) python run_my_tests.py, तो आप कवरेज coverage run run_my_tests.py साथ माप सकते हैं, तो coverage html के साथ HTML रिपोर्ट प्राप्त करें।

आपके विवरण से, मुझे यकीन नहीं है कि नाक के साथ आपको क्या समस्या है, खासकर चाहे वह नाक समस्या हो, या cover.py समस्या हो। कुछ और विवरण प्रदान करें, और मुझे यकीन है कि हम उनके माध्यम से काम कर सकते हैं।

1

नेड ने पहले से ही अपने उत्कृष्ट cover.py मॉड्यूल का उल्लेख किया है।

यदि आपके पास जो समस्या है, वह कुछ नाक विशिष्ट है, तो आप एक और परीक्षण धावक का उपयोग करने पर विचार करना चाहेंगे। मैंने का उपयोग pytest_coverage प्लगइन के साथ किया है जो आपको कवरेज आंकड़े उत्पन्न करने देता है। माइग्रेट करने में आपकी सहायता के लिए इसमें pytest_nose प्लगइन भी है।

हालांकि, मुझे समझ में नहीं आता कि आप जिस समस्या का सामना कर रहे हैं वह वास्तव में है। क्या आप "वितरित/सेटअपटॉल्स" नामस्थान पैकेज सुविधा पर थोड़ा सा विस्तार कर सकते हैं "आपने उल्लेख किया है? मुझे यह जानकर उत्सुकता है कि समस्या क्या है।

+0

हम setuptools की नेमस्पेस पैकेज सुविधा का उपयोग करते हैं जो एकाधिक अंडों को सिग्नल नेमस्पेस में सामान प्रदान करने की अनुमति देता है, उदाहरण के लिए यदि myproduct_foo_1.0.egg नामस्थान myproduct और myproduct.foo प्रदान कर सकता है, और myproduct_bar_1.0.egg नामस्थान प्रदान करेगा myproduct.bar। जब मैं अपने उत्पाद पर कवरेज विश्लेषण करने का प्रयास करता हूं तो कवरेज टूल को यह पता लगाने की आवश्यकता होती है कि दोनों अंडों में से प्रत्येक में वास्तव में प्रत्येक प्रासंगिक मॉड्यूल का स्रोत होता है। इस समय नाक/cover.py गलत कर रहा है। –

+1

सलीम, मुझे यह अधिकार प्राप्त करने के लिए cover.py को ठीक करना अच्छा लगेगा। क्या आपके पास नमूना है मैं खुद को कोशिश कर सकता हूं? –

+1

बीटीडब्लू: मैंने इस समस्या के लिए एक cover.py टिकट जोड़ा: http://bitbucket.org/ned/coveragepy/issue/75/namespace-packages-break-coveragepys-ability-to-find-source –