2012-05-18 5 views
5

"मॉड्यूल 'pytest' नहीं 'उठाता' सदस्य है":pylint py.test पर शिकायत: निम्न कोड के साथ

import pytest 
def test_a(): 
    with pytest.raises(Exception): 
     1/0 

अगर मैं उस पर pylint चलाने के लिए, यह एक शिकायत कर देगा कि "उठाता"

E: 3,9:test_a: Module 'pytest' has no 'raises' member 

स्पष्ट रूप से सही नहीं है कौन सा: मॉड्यूल pytest का सदस्य नहीं है। कोई विचार क्यों पिलिंट ऐसी गलती कर रहा है? क्या यह कोई ज्ञात त्रुटि है?

py.test संस्करण:

> py.test --version 
This is py.test version 2.2.3, imported from C:\Python27\lib\site-packages\pytest.pyc 

PyLint संस्करण:

> pylint --version 
No config file found, using default configuration 
pylint 0.25.1, 
astng 0.23.1, common 0.57.1 
Python 2.7.2 (default, Jun 24 2011, 12:22:14) [MSC v.1500 64 bit (AMD64)] 
+0

यह उपयोगी हो अगर आप, आप (pylint --version के उत्पादन में) का उपयोग कर रहे pylint के संस्करण प्रदान कर सकता है और साथ ही होगा py.test का संस्करण। –

+0

@ गुर्नएलेक्स हाय गुर्नी, मैंने मूल जानकारी को संस्करण जानकारी सहित अपडेट किया है। धन्यवाद। – KFL

उत्तर

3

पिछली बार मैंने pylib देखा इस तरह पूरी तरह से आयात कोड को फिर से परिभाषित के रूप में, निम्न स्तर अजगर सामान में कुछ भारी गतिशील करता है। यह बहुत संभावना है कि यह पूरी तरह से पिलिंट/अस्थि को परेशान करता है, और इसे पाइस्टेस्ट मॉड्यूल के अंदर क्या प्राप्त करने से रोकता है: पिलिंट/अस्थिंग उस कोड को आयात नहीं करता है जो इसका विश्लेषण करता है, यह इसका विश्लेषण करता है, जिसका अर्थ यह है कि आयात समय पर गतिशील रूप से प्रारंभ की जाने वाली सामग्री आम तौर पर अनजान हो जाते हैं, जो बदले में आपके द्वारा रिपोर्ट की गई झूठी सकारात्मक उत्पन्न करता है।

वहाँ से, आप निम्न विकल्प का सामना:

  • उपयोग एक और unittest ढांचे, कम गतिशील py.test से
  • चुप्पी चेतावनी/अपने परीक्षण कोड पर त्रुटियों मैन्युअल
  • एक और लिंटर का उपयोग जो py.test पर pylint की तुलना में अधिक खुश है (मुझे यह जानने में दिलचस्पी है कि उस कोड पर पाइकेकर/पाइफ्लेक्स किराया कैसे है)
  • अस्थिर प्लगइन लिखें जो अस्थिर ग्रोक को पिलिब चालों में मदद करेगा और इसे अस्थिर रखरखाव के लिए एक पैच के रूप में सबमिट करेगा (और उस से अतिरिक्त क्रेडिट प्राप्त करें)
+3

अरे एलेक्स। पाइस्टेस्ट कुछ वर्षों से संस्करण 2.0 वास्तव में, "पिलिब" गतिशील आयात तर्क का उपयोग नहीं करता है। हालांकि, प्लगइन्स को "पायस्टेस्ट" नेमस्पेस में जोड़ने की अनुमति है जो वास्तव में "pytest.raises" के लिए हो रहा है। – hpk42

+0

परिशुद्धता @ hpk42 के लिए धन्यवाद। गतिशील रूप से सबसे पुराने नामस्थान में जोड़ना हालांकि पिलिंट के स्थैतिक विश्लेषण के लिए एक शोस्टॉपर है, इसलिए मेरे उत्तर में निष्कर्ष अभी भी हैं। –

+0

क्या इसके नामस्थान के बारे में पिलिंट को सूचित करने का कोई तरीका है? – hpk42

3

आप के साथ एक pylintrc फ़ाइल में इस मौन कर सकते हैं: ignored-classes=pytest

+0

यह उत्तर मेरा अपवित्र प्राप्त कर लेगा, लेकिन आपने कुछ जानकारी छोड़ दी जो मुझे देखना पसंद आया। विकल्प के लिए सही अनुभाग: 'ignored-classes = pytest' को एक pylintrc फ़ाइल में '[TYPECHECK]' के अंतर्गत रखा जाना चाहिए।साथ ही, इस पोस्ट द्वारा उदाहरण के अनुसार, कुछ अलग-अलग स्थानों में एक पिलिंट्रैक फ़ाइल लगाई जा सकती है: http://stackoverflow.com/a/16273555/955014 – imolit