2012-08-29 12 views
27

का उपयोग कर पाइथन कवरेज रिपोर्ट से नकली पैकेज को कैसे बाहर निकालना है मैं वर्तमान में पाइथन में कुछ मूल नाक unittests लिखने के लिए नकली पुस्तकालय का उपयोग करने की कोशिश करता हूं।nosetests

कुछ बुनियादी उदाहरण को पूरा करने के बाद अब मैंने nosetests --with-coverage का उपयोग करने की कोशिश की है और अब मेरे पास नकली पैकेज है और पैकेज जिसे मैंने 'मॉक दूर' करने की कोशिश की है, कवरेज रिपोर्ट में दिखाया गया है। क्या इन्हें बाहर करने की संभावना है?

from imaplib import IMAP4 

class ImapProxy: 
    def __init__(self, host): 
     self._client = IMAP4(host) 

और testcase:

यहाँ वर्ग मैं परीक्षण करना चाहते है नकली आयात पैच से

from ImapProxy import ImapProxy 

class TestImap: 
    def test_connect(self): 
     with patch('ImapProxy.IMAP4') as imapMock: 
      proxy = ImapProxy("testhost") 
      imapMock.assert_called_once_with("testhost") 

मैं अब मिल के लिए nosetests --with-coverage

. 
Name   Stmts Miss Cover Missing 
------------------------------------------ 
ImapProxy  4  0 100% 
imaplib  675 675  0% 23-1519 
mock   1240 810 35% [ a lot of lines] 
निम्नलिखित उत्पादन

नकली पैकेज और बाहर करने के लिए कोई रास्ता है imaplib पैकेज द्वारा --cover-package=PACKAGE

नेड Batchelder के लिए धन्यवाद मैन्युअल रूप से सभी लेकिन उन संकुल श्वेत सूची बनाती बिना मैं अब, उसके लिए धन्यवाद .coveragerc फाइल के बारे में पता है!

[report] 
omit = *mock* 

अब कवरेज रिपोर्ट में नकली के लिए मेरे उत्पादन है:

mock      1240 1240  0% 16-2356 

यह नकली पैकेज कवर नहीं करता है किसी भी अब लेकिन

मैं निम्नलिखित सामग्री के साथ एक .coveragerc फ़ाइल बनाई अभी भी रिपोर्ट में दिखाता है।

मैं Coverage.py, संस्करण 3.5.2 का उपयोग करता हूं यदि यह कोई मदद है।

+0

कोशिश '--cover-erase' के साथ पिछले डेटा मिटाने के लिए। – xbello

उत्तर

30

एक .coveragerc फ़ाइल बनाएँ शामिल नहीं है कि रिपोर्ट में नहीं करना चाहती: http://nedbatchelder.com/code/coverage/config.html

+0

आप मुझे एक कदम करीब मिला, इसके लिए धन्यवाद। –

+0

क्या आप मेरे प्रश्न में जो जानकारी जोड़ा है, उसे देख सकते हैं? मुझे यकीन नहीं है कि यह मेरी तरफ से एक त्रुटि है या यदि [रिपोर्ट] ब्लॉक में छोड़ना सही ढंग से काम नहीं कर रहा है। –

+3

मुझे एक ही समस्या का सामना करना पड़ रहा है, और एक 'coveragerc' फ़ाइल बनाई है जिसमें समावेशन और चूक शामिल हैं। हालांकि, नाक इस पर विचार नहीं कर रहा है और पाइथन के सभी पुस्तकालयों पर कवरेज चलाने के लिए आगे बढ़ता है (कॉन्फ़िगरेशन फ़ाइल में 'cover_pylib' को 'गलत' पर सेट किया जा रहा है)। नाक के साथ coveragerc काम करने के लिए कोई विचार है? – Boris

14

अपने .coveragerc में [run] अनुभाग के लिए [report] अनुभाग से अपना omit प्रवेश ले जाएँ।

+0

बिल्कुल। '[रिपोर्ट] 'प्रति फ़ाइल रिपोर्टिंग दबाता है लेकिन% गणना में परिवर्तन नहीं करता है। '[रन] 'मेरे लिए काम करता है। – cdunn2001

1

मेरे पास इसी तरह की स्थिति थी जो मेरी मुख्य पैकेज निर्देशिका में उप-पैकेजों की श्रृंखला का परीक्षण करती थी। मैं अपने मॉड्यूल की शीर्ष निर्देशिका में nosetests चला रहा था और Mock और अन्य पुस्तकालयों को कवरेज रिपोर्ट में शामिल किया गया था। मैंने नोसेटेट में --cover-module my_package का उपयोग करने का प्रयास किया, लेकिन फिर उप-पैकेज शामिल नहीं थे।

निम्नलिखित चल रहा है मेरी समस्या हल:

nosetests --with-coverage --cover-erase --cover-package ../my_package 

तो, अगर सभी कोड आप परीक्षण करना चाहते हैं कि एक ही निर्देशिका में है, तो आप को निर्दिष्ट करके अकेले इसके लिए कवरेज प्राप्त कर सकते हैं मॉड्यूल पथ nosetests पर। यह व्यक्तिगत रूप से प्रत्येक submodules प्रत्येक whitelist की जरूरत से परहेज करता है।

(पायथन 2.7.6, कवरेज 4.0.3, नाक 1.3.7)

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