2011-12-26 11 views
13

मैं मूल पायथन मॉड्यूल के लिए 100% कवरेज प्राप्त करने की कोशिश कर रहा हूं। मैं इसका परीक्षण करने के लिए नेड बचेचेल्डर के cover.py मॉड्यूल का उपयोग करता हूं।क्या circuit.py फ़ंक्शन और क्लास परिभाषाओं को मापता है?

1 class account(object): 
2 def __init__(self, initial_balance=0): 
3  self.balance = initial_balance 
4 def add_one(self): 
5 self.balance = self.balance + 1 

ये परीक्षण हैं।

class TestAccount(unittest.TestCase): 
    def test_create_edit_account(self): 
    a = account1.account() 
    a.add_one() 

यहां कवरेज रिपोर्ट मुझे मिलती है।

 
    COVERAGE REPORT = 
    Name     Stmts Miss Cover Missing 
    ----------------------------------------------------- 
    __init__     1  1  0% 1 
    account1     5  3 40% 1-2, 4 
    account2     7  7  0% 1-7 

जैसा कि हम देख सकते हैं, 1-2 और 4 पंक्तियां शामिल नहीं हैं जो परिभाषाएं हैं। बाकी लाइनों को निष्पादित किया जाता है।

उत्तर

14

मैं आपकी समस्या FAQ में वर्णन किया गया लगता है:

प्र: कार्य (या वर्गों) के शव कर दिखाने के रूप में मार डाला, लेकिन डीईएफ़ लाइनें नहीं करते हैं?

ऐसा इसलिए होता है क्योंकि कार्यों के बाद कवरेज शुरू होता है परिभाषित किया गया है। परिभाषा लाइनों को कवरेज माप के बिना निष्पादित किया जाता है, फिर कवरेज शुरू होता है, फिर फ़ंक्शन को कॉल किया जाता है। इसका मतलब है कि शरीर को मापा जाता है, लेकिन फ़ंक्शन की परिभाषा स्वयं नहीं है।

इसे ठीक करने के लिए, पहले कवरेज शुरू करें। यदि आप पर कमांड लाइन का उपयोग अपने प्रोग्राम को कवरेज के साथ चलाते हैं, तो आपका पूरा प्रोग्राम निगरानी करेगा। यदि आप एपीआई का उपयोग कर रहे हैं, तो आपको अपने कार्यों को परिभाषित करने वाले मॉड्यूल आयात करने से पहले कवरेज.स्टार्ट() पर कॉल करने की आवश्यकता है।

+0

! सहायता के लिए धन्यवाद। इसने काम कर दिया। – praveen

4
jcollado के जवाब के बाद

:

मैं Django nose जो केवल परीक्षण द्वारा इस्तेमाल किया लाइनों को शामिल किया गया के साथ इस समस्या है।

इसे ठीक करने के लिए मैं पहली बार manage.py कवरेज के साथ लॉन्च करता हूं और परीक्षण शुरू करने के बाद। .coverage फ़ाइल में दोनों रिपोर्टें होंगी।

मेरा पहला आदेश a custom है जो मेरी परियोजना सेटिंग्स को प्रिंट करता है। उदाहरण:

coverage run ./manage.py settings && ./manage.py test myapp 
संबंधित मुद्दे