بالتأكيد، يمكنك تنفيذ اختبارات pytest للوحدة النمطية الحالية بطريقة أكثر “بايثونية” باستخدام الكود التالي:
pythonimport pytest
def test_current_module():
pytest.main([__file__])
في هذا الكود، قمنا بتعريف وظيفة test_current_module()
التي تستخدم pytest.main()
لتشغيل اختبارات الوحدة النمطية الحالية. يتم تمرير __file__
كمعلمة إلى pytest.main()
لتحديد الملف الحالي كملف للاختبار.
يعتبر هذا النهج “بايثوني” لأنه يستخدم pytest كجزء من الكود البرمجي بدلاً من تشغيل السيناريو باستخدام أمر الطرفية. يساعد هذا في جعل الشيفرة أكثر قابلية لإعادة الاستخدام وفعالية من حيث التكلفة.
بالإضافة إلى ذلك، يمكنك استخدام هذا النهج لتحقيق تغطية كاملة لاختبار الوحدة النمطية الخاصة بك بطريقة منظمة. كما يتيح لك هذا الأسلوب استدعاء الاختبارات بسهولة في وقت الاختبار الآلي أو تكاملها في سياق تطويرك الخاص.
المزيد من المعلومات
بالطبع، دعنا نقوم بتوسيع فهمنا لهذا الموضوع. استخدام pytest
في بايثون لاختبار الوحدات يقدم العديد من الميزات والإمكانيات لتحسين جودة الشيفرة وتحقيق التحقق من السلوك الصحيح للبرنامج. إليك بعض المعلومات الإضافية:
-
استخدام الديكوريتر
@pytest.mark
:
يمكنك استخدام الديكوريتر@pytest.mark
لتحديد خصائص خاصة بالاختبار، مثل تحديد الاعتماديات أو تشغيل أوامر معينة عند تشغيل الاختبار.pythonimport pytest @pytest.mark.dependency() def test_dependency(): assert 1 == 1 def test_another(): assert True
في هذا المثال، يتم تحديد
test_dependency()
باعتبارها اختبارًا يعتمد على اختبار آخر باستخدام@pytest.mark.dependency()
. -
تضمين الاختبارات في وحدات الشيفرة:
يمكنك تضمين اختبارات مباشرة في وحدات الشيفرة عن طريق تحديد وظائف الاختبار باستخدام ملحقاتtest_
أوtest
، مما يساعد في تنظيم وترتيب اختبارات الوحدة.pythondef add(x, y): return x + y def test_add(): assert add(2, 3) == 5
في هذا المثال، يتم تضمين اختبار
test_add()
مباشرة في وحدة الشيفرةadd()
. -
استخدام ملفات إعداد
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
. -
تشغيل الاختبارات باستخدام معلمات الأوامر:
يمكنك تشغيل اختبارات باستخدام معلمات الأوامر في سطر الأوامر، مما يسمح لك بتحديد اختبارات محددة أو ملفات أو وحدات نمطية لتشغيلها.pytest test_module.py
يمكنك أيضًا استخدام خيارات مثل
-k
لتحديد اسم الاختبار أو--cov
لتقرير تغطية الاختبار.
هذه بعض المعلومات الإضافية التي قد تساعدك في تحسين عملك مع اختبارات الوحدات باستخدام pytest
في بايثون.