पर conftest.py आयात नहीं कर सकता मैं सामान्य रूप से पैकेज (मॉड्यूल) बनाने और बनाने के लिए काफी नया हूं। मेरे पास पायस्टेस्ट में कुछ परीक्षण लिखे गए थे, जब तक मैंने स्क्रिप्ट संरचना को दोबारा नहीं किया, तब तक अच्छी तरह से काम किया। यह वास्तव में असफल था, क्योंकि वहां कई स्क्रिप्ट थीं और यह अभिविन्यास के लिए काफी अराजक थी।विंडोज
C:\Users\local\workspace
.+---tools
+---base
+---__init__.py
+---conftest.py
+---script1.py
+---script2.py
+---misc
+---__init__.py
+---run.py
+---__init__.py
script1.py
और script2.py
कुछ वर्गों और परीक्षण के लिए विशेष कक्षाएं शामिल हैं: वर्तमान निर्देशिका संरचना इस तरह से लग रहा है। मुझे बताया गया था कि conftest.py
शीर्ष-स्तर परीक्षण फ़ाइलों के समान फ़ोल्डर में स्थित होना चाहिए, इसलिए मैंने इसे base
निर्देशिका में रखा है।
मैं निम्नलिखित तरीके से run.py
से pytest चलाएँ:
pytest_args = workspace + "/tools/base/script1.py "
pytest_args += workspace + "/tools/base/script2.py"
pytest.main(pytest_args)
जहां workspace
c:/Users/local/workspace
शामिल हैं। मुझे यह त्रुटि मिलती है:
Traceback (most recent call last):
File "c:\Python27\Lib\_pytest\config.py", line 543, in importconftest
mod = conftestpath.pyimport()
File "c:\Python27\Lib\py\_path\local.py", line 660, in pyimport
raise self.ImportMismatchError(modname, modfile, self)
ImportMismatchError: ('tools.base.conftest', 'c:/Users/local/workspace\\jenkins\\tools\\base\\conftest.py', local('c:\\Users\\wokspace\\tools\\base\\conftest.py'))
ERROR: could not load c:\Users\local\workspace\tools\base\conftest.py
मुझे वास्तव में पता नहीं है, इसे कैसे ठीक किया जाए। सब कुछ ठीक काम करता था जब सभी स्क्रिप्ट एक ही फ़ोल्डर में थे (और __init__.py
के बिना)। अन्य स्क्रिप्ट ठीक काम करती हैं (मेरा मतलब निर्भरता के साथ है, जहां कुछ स्क्रिप्ट को अन्य निर्देशिका से मॉड्यूल की आवश्यकता होती है), बस इस पर विफल रहता है।
अजीब यह है कि लिनक्स वितरण पर, यह ठीक काम करता है। मुझे लगता है कि खिड़कियों के पथों में एक समस्या है, जो कि पाइस्टेस्ट के लिए एक वास्तविक समस्या प्रतीत होती है। क्या आपके पास कोई विचार है कि कृपया इसे कैसे हल करें?
आप
यदि आप 'बेस \ __ init __। Py' फ़ाइल को हटाते हैं तो क्या होता है? –
असल में, यह संभव नहीं है, क्योंकि आधार को पैकेज होना चाहिए, क्योंकि इसमें नाम है, जैसा कि मूल स्क्रिप्ट्स द्वारा उपयोग की जाने वाली मूल कक्षाएं शामिल हैं। मैं अपेक्षाकृत परीक्षण कक्षाओं (script1.py और script2.py से) को दूसरी निर्देशिका में (__init__.py के बिना) को आगे बढ़ने के बारे में सोचूंगा। – user1967718