macOS-এ VS Code-এর Python টেস্ট এক্সপ্লোরার যদি কোনো টেস্ট খুঁজে না পায়, ইমপোর্ট সংক্রান্ত ত্রুটি দেখায়, বা ভুল ফোল্ডারে অনুসন্ধান করছে বলে মনে হয়, তবে প্রথমে Python টেস্টিংয়ের ওয়ার্কিং ডিরেক্টরি এবং ফ্রেমওয়ার্ক আর্গুমেন্টগুলো পরীক্ষা করুন। আপনার টেস্ট কমান্ড যে ডিরেক্টরিটি প্রত্যাশা করে, সেটিতে python.testing.cwd সেট করুন, তারপর ডিসকভারি রিফ্রেশ করুন এবং Python আউটপুট লগটি পরীক্ষা করে দেখুন। unittest-এর ক্ষেত্রে, এর পৃথক -s স্টার্ট-ডিরেক্টরি আর্গুমেন্টটিও পরীক্ষা করুন; cwd পরিবর্তন করলে সেই সেটিংটি প্রতিস্থাপিত হয় না।
VS Code কোন ডিরেক্টরি ব্যবহার করছে তা নিশ্চিত করুন
টেস্ট এক্সপ্লোরার খুলুন এবং কমান্ড প্যালেট (⇧⌘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-এ সংরক্ষণ করে; সক্রিয় মানটি পর্যালোচনা করতে সেটিংস এডিটরের 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-এ এমন কোনো সর্বজনীন কমান্ড নেই যা প্রতিটি টেস্ট ফ্রেমওয়ার্ককে একটি ভিন্ন ডিরেক্টরি ব্যবহার করতে বাধ্য করতে পারে।
উৎসসমূহ
Visual Studio Code-এ Python টেস্টিং — Microsoft
ব্যবহারকারী এবং ওয়ার্কস্পেস সেটিংস — Microsoft
মাল্টি-রুট ওয়ার্কস্পেস — Microsoft
ভ্যারিয়েবল রেফারেন্স — Microsoft
VS Code-এ Python এনভায়রনমেন্ট — Microsoft