البرمجة

اختبار وحدات بايثون باستخدام Pytest

بالتأكيد، يمكنك تنفيذ اختبارات pytest للوحدة النمطية الحالية بطريقة أكثر “بايثونية” باستخدام الكود التالي:

python
import pytest def test_current_module(): pytest.main([__file__])

في هذا الكود، قمنا بتعريف وظيفة test_current_module() التي تستخدم pytest.main() لتشغيل اختبارات الوحدة النمطية الحالية. يتم تمرير __file__ كمعلمة إلى pytest.main() لتحديد الملف الحالي كملف للاختبار.

يعتبر هذا النهج “بايثوني” لأنه يستخدم pytest كجزء من الكود البرمجي بدلاً من تشغيل السيناريو باستخدام أمر الطرفية. يساعد هذا في جعل الشيفرة أكثر قابلية لإعادة الاستخدام وفعالية من حيث التكلفة.

بالإضافة إلى ذلك، يمكنك استخدام هذا النهج لتحقيق تغطية كاملة لاختبار الوحدة النمطية الخاصة بك بطريقة منظمة. كما يتيح لك هذا الأسلوب استدعاء الاختبارات بسهولة في وقت الاختبار الآلي أو تكاملها في سياق تطويرك الخاص.

المزيد من المعلومات

بالطبع، دعنا نقوم بتوسيع فهمنا لهذا الموضوع. استخدام pytest في بايثون لاختبار الوحدات يقدم العديد من الميزات والإمكانيات لتحسين جودة الشيفرة وتحقيق التحقق من السلوك الصحيح للبرنامج. إليك بعض المعلومات الإضافية:

  1. استخدام الديكوريتر @pytest.mark:
    يمكنك استخدام الديكوريتر @pytest.mark لتحديد خصائص خاصة بالاختبار، مثل تحديد الاعتماديات أو تشغيل أوامر معينة عند تشغيل الاختبار.

    python
    import pytest @pytest.mark.dependency() def test_dependency(): assert 1 == 1 def test_another(): assert True

    في هذا المثال، يتم تحديد test_dependency() باعتبارها اختبارًا يعتمد على اختبار آخر باستخدام @pytest.mark.dependency().

  2. تضمين الاختبارات في وحدات الشيفرة:
    يمكنك تضمين اختبارات مباشرة في وحدات الشيفرة عن طريق تحديد وظائف الاختبار باستخدام ملحقات test_ أو test، مما يساعد في تنظيم وترتيب اختبارات الوحدة.

    python
    def add(x, y): return x + y def test_add(): assert add(2, 3) == 5

    في هذا المثال، يتم تضمين اختبار test_add() مباشرة في وحدة الشيفرة add().

  3. استخدام ملفات إعداد conftest.py:
    يمكنك إنشاء ملف conftest.py لتكوين وإعدادات الاختبارات الخاصة بمشروعك. يمكن استخدامه لتعيين قيم افتراضية للمتغيرات المستخدمة في الاختبارات أو توفير إعدادات مشتركة لكل الاختبارات.

    python
    # conftest.py import pytest @pytest.fixture def default_value(): return 42
    python
    # test_module.py def test_default_value(default_value): assert default_value == 42

    في هذا المثال، يتم تعريف متغير مرفق (fixture) باستخدام @pytest.fixture في conftest.py واستخدامه في اختبار في test_module.py.

  4. تشغيل الاختبارات باستخدام معلمات الأوامر:
    يمكنك تشغيل اختبارات باستخدام معلمات الأوامر في سطر الأوامر، مما يسمح لك بتحديد اختبارات محددة أو ملفات أو وحدات نمطية لتشغيلها.

    pytest test_module.py

    يمكنك أيضًا استخدام خيارات مثل -k لتحديد اسم الاختبار أو --cov لتقرير تغطية الاختبار.

هذه بعض المعلومات الإضافية التي قد تساعدك في تحسين عملك مع اختبارات الوحدات باستخدام pytest في بايثون.

زر الذهاب إلى الأعلى