यदि VS Code का Python Test Explorer कोई टेस्ट नहीं ढूंढ पाता है, इंपोर्ट एरर दिखाता है, या macOS पर गलत फ़ोल्डर खोजता हुआ प्रतीत होता है, तो सबसे पहले Python टेस्टिंग वर्किंग डायरेक्ट्री और फ़्रेमवर्क आर्ग्युमेंट्स की जांच करें। python.testing.cwd को उस डायरेक्ट्री पर सेट करें जिसकी आपके टेस्ट कमांड को अपेक्षा है, फिर डिस्कवरी को रीफ़्रेश करें और Python आउटपुट लॉग का निरीक्षण करें। unittest के लिए, इसके अलग -s start-directory आर्ग्युमेंट की भी जांच करें; cwd बदलने से वह सेटिंग रिप्लेस नहीं होती है।

पुष्टि करें कि VS Code किस डायरेक्ट्री का उपयोग कर रहा है

Test Explorer खोलें और Command Palette (⇧⌘P) से Test: Refresh Tests चलाएं। यदि डिस्कवरी विफल हो जाती है, तो View > Output खोलें, आउटपुट चैनल मेनू से Python चुनें, और नवीनतम डिस्कवरी प्रविष्टि पढ़ें। Python एक्सटेंशन इस लॉग में डिस्कवरी त्रुटियां भेजता है, जिससे पाथ संबंधी समस्या को किसी अनुपलब्ध फ़्रेमवर्क या सिंटैक्स एरर से अलग पहचानने में मदद मिल सकती है। VS Code इन डिस्कवरी और लॉगिंग चरणों का दस्तावेज़ीकरण करता है।

जांचें कि VS Code विंडो में कौन सा फ़ोल्डर खुला है। सिंगल-फ़ोल्डर वर्कस्पेस में, वर्कस्पेस आमतौर पर प्रोजेक्ट रूट होता है। यदि आपने किसी रिपॉजिटरी का पैरेंट फ़ोल्डर या मल्टी-रूट वर्कस्पेस खोला है, तो रिलेटिव पाथ आपके द्वारा सोचे गए रूट से भिन्न रूट से हल हो सकते हैं। टर्मिनल की वर्तमान डायरेक्ट्री एक्सटेंशन द्वारा उपयोग की गई डायरेक्ट्री स्थापित करने के लिए पर्याप्त नहीं है; डिस्कवरी आउटपुट और वर्कस्पेस सेटिंग्स देखें। मल्टी-रूट वर्कस्पेस में, VS Code फ़ोल्डर-विशिष्ट सेटिंग्स की अनुमति देता है, और ${workspaceFolder} सेटिंग से जुड़े फ़ोल्डर को संदर्भित करता है। VS Code की वर्कस्पेस गाइड मल्टी-रूट फ़ोल्डर्स की व्याख्या करती है, और इसका वेरिएबल संदर्भ फ़ोल्डर-स्कोप वाले पाथ्स को कवर करता है।

Python टेस्ट वर्किंग डायरेक्ट्री सेट करें

उदाहरण के लिए, यदि आपने रिपॉजिटरी रूट खोला है लेकिन आपका टेस्ट कमांड इसके backend सबफ़ोल्डर से चलना चाहिए, तो Mac पर ⇧⌘P के साथ वर्कस्पेस सेटिंग्स खोलें और Preferences: Open Workspace Settings (JSON) चुनें। इस कुंजी को मौजूदा JSON ऑब्जेक्ट में जोड़ें या मर्ज करें:

{
  "python.testing.cwd": "${workspaceFolder}/backend"
}

अपने प्रोजेक्ट के लिए वास्तविक डायरेक्ट्री का उपयोग करें। यदि टेस्ट वर्कस्पेस रूट पर चलने चाहिए, तो आप इस सेटिंग को छोड़ सकते हैं या इसे ${workspaceFolder} पर सेट कर सकते हैं। backend जैसे किसी सामान्य रिलेटिव मान से बचें यदि आप अनिश्चित हैं कि यह किस रूट के सापेक्ष है; स्पष्ट वर्कस्पेस वेरिएबल इच्छित बेस को अधिक स्पष्ट बनाता है। वर्कस्पेस सेटिंग्स यूज़र सेटिंग्स को ओवरराइड करती हैं, इसलिए यदि आपका बदलाव अप्रभावी प्रतीत होता है तो दोनों स्कोप का निरीक्षण करें। VS Code सिंगल-फ़ोल्डर वर्कस्पेस सेटिंग्स को .vscode/settings.json में संग्रहीत करता है; सक्रिय मान की समीक्षा करने के लिए Settings एडिटर के Workspace टैब का उपयोग करें। वर्कस्पेस सेटिंग्स और प्राथमिकता का वर्णन VS Code के सेटिंग्स दस्तावेज़ में किया गया है।

Python एक्सटेंशन की cwd सेटिंग वैकल्पिक है। इसके दस्तावेज़ में कहा गया है कि इसे सेट करने से pytest का --rootdir भी समायोजित हो जाता है; rootdir pytest का प्रोजेक्ट-रूट कॉन्फ़िगरेशन है, इसलिए इसे प्रत्येक फ़्रेमवर्क के टेस्ट सर्च आर्ग्युमेंट के साथ विनिमेय न मानें। Python टेस्टिंग सेटिंग्स संदर्भ इस pytest व्यवहार की पहचान करता है।

फ़्रेमवर्क-विशिष्ट डिस्कवरी आर्ग्युमेंट्स की जांच करें

pytest के लिए, किसी ऐसे पाथ के लिए python.testing.pytestArgs की समीक्षा करें जो किसी अप्रत्याशित स्थान की ओर इंगित करता हो। tests जैसा पाथ pytest को बताता है कि क्या एकत्र करना है, जबकि python.testing.cwd वर्किंग-डायरेक्ट्री संदर्भ सेट करता है। केवल उन्हीं आर्ग्युमेंट्स को रखें जिनकी आपके प्रोजेक्ट को आवश्यकता है, और पाथ को उस संदर्भ के अनुरूप बनाएं। संपादन के बाद, फिर से Test: Refresh Tests चलाएं। एक्सटेंशन वर्तमान फ़ोल्डर और सबफ़ोल्डर्स के तहत अपने सम्मेलनों से मेल खाने वाली pytest फ़ाइलों की खोज करता है; डिस्कवरी अभी भी cwd से असंबंधित कारणों से विफल हो सकती है, जिसमें अनुपलब्ध pytest इंस्टॉलेशन या टेस्ट-फ़ाइल त्रुटियां शामिल हैं। आधिकारिक टेस्टिंग गाइड डिस्कवरी व्यवहार और सामान्य विफलता रिपोर्टिंग को सूचीबद्ध करती है।

unittest के लिए, python.testing.unittestArgs का अलग से निरीक्षण करें। इसके डिफ़ॉल्ट आर्ग्युमेंट्स में -s . शामिल है, जहां -s स्टार्ट डायरेक्ट्री का चयन करता है। यदि टेस्ट backend/tests के तहत स्थित हैं और cwd रिपॉजिटरी रूट है, तो स्टार्ट डायरेक्ट्री को तदनुसार कॉन्फ़िगर करें, उदाहरण के लिए:

{
  "python.testing.cwd": "${workspaceFolder}",
  "python.testing.unittestEnabled": true,
  "python.testing.pytestEnabled": false,
  "python.testing.unittestArgs": ["-v", "-s", "backend/tests", "-p", "*test*.py"]
}

यह unittest का उपयोग करने वाले प्रोजेक्ट के लिए एक उदाहरण है; यदि आपका फ़्रेमवर्क या फ़ाइल नामकरण भिन्न है तो इसे बिना बदलाव के कॉपी न करें। unittest के लिए खोजी गई टेस्ट फ़ाइलों का इंपोर्ट करने योग्य मॉड्यूल या पैकेज होना भी आवश्यक है। यदि लॉग किसी टेस्ट सबफ़ोल्डर में इंपोर्टेबिलिटी त्रुटियां दिखाता है, तो पैकेज संरचना की जांच करें; VS Code नोट करता है कि एक __init__.py फ़ाइल ऐसे फ़ोल्डर्स को इंपोर्ट करने योग्य बना सकती है। आधिकारिक गाइड unittest के -s और -p विकल्पों का वर्णन करती है।

रीफ़्रेश करें और शेष विफलताओं को अलग करें

सेटिंग्स बदलने के बाद, फिर से Test: Refresh Tests चलाएं। यदि VS Code अभी भी किसी अप्रत्याशित वातावरण का उपयोग करता है, तो Python: Select Interpreter चलाएं और उस वातावरण को चुनें जिसमें आपका टेस्ट फ़्रेमवर्क स्थापित है; चयनित इंटरप्रेटर का उपयोग टेस्टिंग सहित Python सुविधाओं के लिए किया जाता है। VS Code की Python वातावरण गाइड इंटरप्रेटर चयन की व्याख्या करती है।

यदि आउटपुट अभी भी गलत पाथ दिखाता है, तो लॉग की गई वर्किंग डायरेक्ट्री की तुलना वर्कस्पेस रूट और कॉन्फ़िगर किए गए टेस्ट आर्ग्युमेंट्स से करें। यदि पाथ सही है लेकिन डिस्कवरी विफल हो जाती है, तो इसके बजाय वास्तविक त्रुटि का अनुसरण करें: फ़्रेमवर्क इंस्टॉलेशन, इंपोर्ट एरर, सिंटैक्स एरर और टेस्ट फ़ाइल नाम पैटर्न की जांच करें। cwd समायोजन उन स्वतंत्र समस्याओं को ठीक नहीं कर सकता है। यदि सही ढंग से कॉन्फ़िगर किया गया प्रोजेक्ट अभी भी असंगत पाथ लॉग करता है या सेटिंग को अनदेखा करता है, तो समस्या की रिपोर्ट करते समय Python आउटपुट और संबंधित सेटिंग्स कैप्चर करें; कोई ऐसा सार्वभौमिक VS Code कमांड नहीं है जो प्रत्येक टेस्ट फ़्रेमवर्क को एक अलग डायरेक्ट्री का उपयोग करने के लिए बाध्य करे।

स्रोत