إذا لم يعثر مستكشف اختبارات Python في VS Code على أي اختبارات، أو أبلغ عن أخطاء في الاستيراد، أو بدا أنه يبحث في المجلد الخطأ على نظام macOS، فتحقق من دليل عمل اختبارات Python ووسائط إطار العمل أولاً. قم بتعيين python.testing.cwd إلى الدليل الذي يتوقعه أمر الاختبار، ثم حدّث عملية الاستكشاف وافحص سجل مخرجات Python. بالنسبة إلى unittest، تحقق أيضاً من وسيطة دليل البدء -s المنفصلة الخاصة به؛ فتغيير cwd لا يحل محل هذا الإعداد.

تأكد من الدليل الذي يستخدمه VS Code

افتح مستكشف الاختبارات (Test Explorer) وشغّل Test: Refresh Tests من لوحة الأوامر (Command Palette) عبر الاختصار (⇧⌘P). وإذا فشل الاستكشاف، افتح View > Output، واختر Python من قائمة قنوات الإخراج، واقرأ أحدث إدخال للاستكشاف. ترسل إضافة Python أخطاء الاستكشاف إلى هذا السجل، مما قد يساعد في التمييز بين مشكلة المسار ونقص إطار العمل أو الخطأ النحوي (syntax error). يوثق VS Code خطوات الاستكشاف والتسجيل هذه.

تحقق من المجلد المفتوح في نافذة VS Code. في مساحة عمل ذات مجلد واحد، تكون مساحة العمل عادةً هي جذر المشروع (project root). إذا فتحت المجلد الأصل للمستودع، أو مساحة عمل متعددة الجذور، فقد يتم حل المسارات النسبية انطلاقاً من جذر مختلف عن ذلك الذي افترضته. لا يكفي الدليل الحالي للطرفية (terminal) لتحديد الدليل الذي استخدمته الإضافة؛ انظر إلى مخرجات الاستكشاف وإعدادات مساحة العمل. في مساحات العمل متعددة الجذور، يسمح 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 إعدادات مساحة العمل وأسبقيتها.

يعد إعداد cwd لإضافة Python اختيارياً. وتشير وثائقه إلى أن تعيينه يضبط أيضاً خيار --rootdir الخاص بـ pytest؛ علماً بأن 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 أيضاً أن تكون ملفات الاختبار المكتشفة وحدات (modules) أو حزماً (packages) قابلة للاستيراد. إذا أظهر السجل أخطاء في قابلية الاستيراد داخل مجلد فرعي للاختبارات، فتحقق من بنية الحزمة؛ حيث يشير VS Code إلى أن وجود ملف __init__.py يمكن أن يجعل هذه المجلدات قابلة للاستيراد. يصف الدليل الرسمي خياري -s و -p في unittest.

تحديث الاختبارات وعزل حالات الفشل المتبقية

بعد تغيير الإعدادات، شغّل Test: Refresh Tests مرة أخرى. إذا استمر VS Code في استخدام بيئة غير متوقعة، فشغّل Python: Select Interpreter واختر البيئة التي تحتوي على إطار عمل الاختبار المثبت لديك؛ حيث يُستخدم المترجم (interpreter) المحدد لميزات Python بما في ذلك الاختبارات. يشرح دليل بيئات Python في VS Code كيفية تحديد المترجم.

إذا استمرت المخرجات في إظهار المسار الخطأ، فقارن دليل العمل المسجل مع جذر مساحة العمل ووسائط الاختبار التي تم تكوينها. وإذا كان المسار صحيحاً ولكن الاستكشاف فشل، فاتبع الخطأ الفعلي بدلاً من ذلك: تحقق من تثبيت إطار العمل، وأخطاء الاستيراد، والأخطاء النحوية، وأنماط أسماء ملفات الاختبار. لا يمكن لتعديل cwd إصلاح هذه المشكلات المستقلة. إذا استمر مشروع تم تكوينه بشكل صحيح في تسجيل مسار غير متطابق أو تجاهل الإعداد، فقم بتسجيل مخرجات Python والإعدادات ذات الصلة عند الإبلاغ عن المشكلة؛ فلا يوجد أمر عام في VS Code يفرض على كل أطر عمل الاختبارات استخدام دليل مختلف.

المصادر