2014-04-20 10 views
6

का उपयोग नहीं करते हैं tox website पर सूचीबद्ध पहली सुविधा "आपके पैकेज को विभिन्न पायथन संस्करणों और दुभाषियों के साथ सही तरीके से स्थापित करने की जांच कर रही है"। इससे मुझे लगता है कि अगर मैंने अपना setup.py खराब कर दिया है, तो परीक्षण पास नहीं होंगे, और मुझे इस तथ्य से सतर्क किया जाएगा कि मेरा setup.py खराब हो गया है।टॉक्स के तहत परीक्षण आवश्यक रूप से स्थापित कोड

ऐसा नहीं है। वास्तव में ऐसा होता है कि कोड स्थानीय निर्देशिका (उर्फ {toxinidir}) से आयात किया जाता है यदि आप अपने मॉड्यूल या पैकेज को अपने tox.ini के समान निर्देशिका में डालने के सामान्य पैटर्न का पालन करते हैं। इसका मतलब है कि आप अपना setup.py पूरी तरह से कुछ भी नहीं कर सकते हैं, और टोक्स आपको ठीक बताएगा। उस बिंदु पर, जब तक आप pypi पर धक्का नहीं देते हैं और चीज़ का उपयोग करने की कोशिश करते हैं, तब तक समस्या को ध्यान में रखना बहुत आसान है। यह एक तरह का मुद्दा है जिसे मैं रोकना चाहता हूं।

मुख्य मुद्दा यह है कि परीक्षण के दौरान sys.path पर खाली-स्ट्रिंग दिखाई देती है। पाइथन इस बात का अर्थ है कि वर्तमान कार्यशील निर्देशिका और वहां से आयात।

क्या टोक्स को कॉन्फ़िगर करने का कोई तरीका है कि स्थानीय निर्देशिका का प्रयोग परीक्षण के दौरान नहीं किया जाता है?

वर्तमान में मेरा कामकाज cd {envtmpdir} && coverage run && mv .coverage {toxinidir} है, लेकिन यह स्पष्ट रूप से एक बदसूरत हैक है।

यहाँ मैं हमारे कोड के दो संस्करण प्रदान करते हैं:

मेरा लक्ष्य एक tox विन्यास है कि ऊपर समस्या से बचा जाता है मिल रहा है, और काफी उचित सिफारिश करने के लिए है सभी परियोजनाओं में उपयोग के लिए।

उत्तर

1

मैंने देखा है कि nosetestssys.path को इसके चलते संशोधित करता है: यह बहुत शुरुआत में चेक आउट कोड जोड़ रहा है। यह अनिवार्य रूप से अलगाव टोक्स को तोड़ने की कोशिश कर रहा है तोड़ता है। इसे ठीक करने के लिए, आप केवल संलग्न करने के लिए है -P ध्वज nosetests रहे हैं:

[tox] 
envlist = py27 

[testenv] 
commands= 
    nosetests -P tests 
deps= 
    nose 
    -rrequirements.txt 

इसके अलावा, मैं (tests/ निर्देशिका की ओर इशारा करते नाक) tests संलग्न करने के लिए किया था गैर-परीक्षण कोड के किसी भी ing import से नाक को रोकने के लिए (मैं सी-एक्सटेंशन का उपयोग कर रहा हूं जो चेकआउट में बनाया जा सकता है या नहीं)।

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