تكرار السؤال: …
الإجابة المختصرة
لا؛ تقيس الـ coverage الأسطر أو الفروع التي نُفذت أثناء الاختبارات، لا جودة الـ assertions ولا تغطية الحالات الخطرة. هي إشارة مفيدة لكنها ليست هدفًا بحد ذاتها.
الشرح
يمكن الوصول إلى 100% coverage باختبارات لا تتحقق من شيء. استخدم branch coverage (--branch) لكشف الشروط غير المختبرة، وراجع الأجزاء غير المغطاة لتسأل: هل هذا مسار خطر؟ ركّز على invariants العمل ومسارات الفشل والعقود بين المكونات. ويكشف mutation testing (مثل mutmut) قوة الـ assertions عبر تعديل الكود ومعرفة إن كانت الاختبارات ستفشل.
مثال بالكود
# pyproject.toml
[tool.coverage.run]
branch = true
source = ["app"]
[tool.coverage.report]
fail_under = 85
show_missing = true
# التشغيل
# coverage run -m pytest && coverage reportأخطاء شائعة
- كتابة اختبارات بلا assertions لرفع النسبة فقط.
- فرض نسبة موحدة على كل الكود بما فيه الكود المولد أو التجريبي.