21

मैंने अभी तक एक पायथन परियोजना के लिए कुछ यूनिट परीक्षण लिखना शुरू कर दिया है जो मैंने अनजान और कवरेज का उपयोग किया है। मैं केवल वर्तमान में एक छोटे से अनुपात का परीक्षण कर रहा हूँ लेकिन कोड कवरेजपायथन यूनिट परीक्षण कवरेज

मैं अपने परीक्षण चलाने के बाहर काम करते हैं और निम्नलिखित

python -m unittest discover -s tests/ 
coverage run -m unittest discover -s tests/ 
coverage report -m 

समस्या मैं आ रही कवरेज का उपयोग कर का उपयोग कर प्राप्त करने की कोशिश है कि कवरेज है कह मैं 44% कोड कवरेज और केवल उन्हीं फ़ाइलों को गणना कर रहा है:

  1. इकाई परीक्षण में परीक्षण किया गया (सभी फाइलों कि परीक्षण नहीं किया गया है और कुल मिलाकर कवरेज में नहीं याद कर रहे हैं)
  2. में थे librar वास्तविक परीक्षणों के वर्चुअल वातावरण और कोड कवरेज में भी ies। निश्चित रूप से इसमें परिणामों में वास्तविक परीक्षण शामिल नहीं होना चाहिए?

इसके अलावा यह कहता है कि फ़ाइलें जो वास्तव में इन इकाई परीक्षण में परीक्षण कर रहे हैं केवल पहली कुछ पंक्तियों का परीक्षण किया (जो ज्यादातर मामलों में आयात बयान कर रहे हैं)

है मैं कैसे एक और अधिक यथार्थवादी कोड कवरेज मिलता है या क्या यह इस तरह का मतलब है?

उत्तर

18

कवरेज रन लाइन के लिए --source=. जोड़े प्रदान करता है। यह दोनों फोकस को वर्तमान निर्देशिका में सीमित कर देगा, और उन .py फ़ाइलों की खोज करेगा जो बिल्कुल नहीं चल रहे थे।

+4

धन्यवाद, यह मेरे लिए काम करता है! 'कवरेज रन - स्रोत = {डीआईआर} -एम अनजान खोज-परीक्षण /' कवर {dir} होगा। क्या मैं हालांकि पूछ सकता हूं: उपनिवेशियों (पुनरावर्ती) के माध्यम से जाने के बारे में क्या? – sunyata

+0

मैंने पाया कि एकाधिक निर्देशिका/मॉड्यूल शामिल करने के लिए इसका उपयोग करना संभव है: '--source = {dir1}, {dir2}, {etc}' (कृपया ध्यान दें कि अल्पविराम संकेतों के बाद कोई जगह नहीं है)। यदि यह स्रोत कोड – sunyata

+0

स्रोत कोड में नए मॉड्यूल जोड़े जाने पर भी उपलब्ध है, तो यह अभी भी रिकर्सिव विकल्प के साथ उपयोगी होगा प्रलेखन: [Coverage.py कमांड लाइन उपयोग] (https://coverage.readthedocs.io/en/latest/ cmd.html) – sunyata

1

आप के बजाय एक testrunner रूप nose उपयोग करते हैं, इसके लिए कवरेज प्लगइन

--cover-inclusive  Include all python files under working directory in 
         coverage report. Useful for discovering holes in test 
         coverage if not all files are imported by the test 
         suite. [NOSE_COVER_INCLUSIVE] 

    --cover-tests   Include test modules in coverage report 
         [NOSE_COVER_TESTS] 
संबंधित मुद्दे