Coverage.py: أداة تحليل تغطية الكود في اختبارات Python

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Coverage.py

Coverage.py هو أداة قوية لتحليل تغطية الكود بالاختبارات في Python، تتيح للمطورين معرفة أي أجزاء من الكود تم تنفيذها أثناء الاختبارات وأيها لم يتم استخدامها. هذه الأداة جزء أساسي من عملية ضمان جودة الكود وتساعد في اكتشاف المشكلات المحتملة في تغطية الاختبارات.

الهدف الرئيسي لـ Coverage.py هو تقديم معلومات تفصيلية حول مدى شمولية اختباراتك للكود المكتوب. تقوم الأداة بتحليل تنفيذ البرنامج وإنشاء تقارير توضح نسبة التغطية لكل ملف أو وحدة أو حتى أسطر فردية من الكود.

الميزات الرئيسية لـ Coverage.py

يوفر Coverage.py مجموعة واسعة من الوظائف لتحليل تغطية الكود:

قياس تغطية الأسطر — الوظيفة الأساسية التي تتعقب أي أسطر الكود تم تنفيذها أثناء الاختبارات.

تحليل الفروع — وظيفة متقدمة تتحقق مما إذا تم تنفيذ جميع المسارات الممكنة في الهياكل الشرطية (if, elif, else).

إنشاء التقارير — إنتاج تقارير مفصلة بتنسيقات متعددة: نصي، HTML، XML، JSON.

التكامل مع أطر العمل — عمل سلس مع أطر الاختبارات الشهيرة مثل pytest وunittest وnose.

إعداد الاستثناءات — إمكانية استبعاد ملفات أو مجلدات أو أسطر معينة من تحليل التغطية.

التثبيت والإعداد الأولي

التثبيت القياسي

لتثبيت Coverage.py استخدم pip:

pip install coverage

التثبيت مع ميزات إضافية

إذا كنت تعمل مع pytest، يُنصح بتثبيت الإضافة pytest-cov:

pip install pytest-cov

للعمل مع ملفات الإعدادات toml:

pip install coverage[toml]

التحقق من التثبيت

بعد التثبيت، تأكد من أن Coverage.py يعمل بشكل صحيح:

coverage --version

الأوامر الأساسية واستخدامها

تشغيل تحليل التغطية

تشغيل تحليل التغطية الأساسي لسكريبت Python:

coverage run my_script.py

التشغيل مع معاملات إضافية:

coverage run --source=my_package my_script.py

التشغيل مع وحدة unittest

coverage run -m unittest discover

التشغيل مع pytest

coverage run -m pytest

أو باستخدام pytest-cov:

pytest --cov=my_module tests/

عرض تقرير التغطية

التقرير النصي في الطرفية

coverage report

مثال على المخرجات:

Name                 Stmts   Miss  Cover
----------------------------------------
my_module.py            25      3    88%
utils.py                15      0   100%
main.py                 20      5    75%
----------------------------------------
TOTAL                   60      8    87%

تقرير مفصل مع الأسطر المفقودة

coverage report --show-missing

تقرير HTML

coverage html

بعد تنفيذ الأمر، افتح الملف htmlcov/index.html في المتصفح لعرض التقرير التفاعلي.

تقرير XML لـ CI/CD

coverage xml

تقرير JSON

coverage json

إدارة بيانات التغطية

مسح البيانات

                
    
    

توصيات