في إطار عملك مع وحدات الاختبار (unittest) في Python، قد تكون واجهتك مع ضبط مستوى التسجيلات (logging) أمرًا محيرًا، خاصةً إذا كنت ترغب في تحديد مستوى التسجيلات لجميع المسجلات (loggers) أثناء تشغيل الاختبارات. يبدو أن unittest يعيد تعيين مستوى التسجيل الافتراضي إلى WARNING
لجميع المسجلات، ولكنك ترغب في الحفاظ على نفس إعدادات التسجيل عند تشغيل التطبيق. لذا، كيف يمكنك تحقيق هذا؟
أولًا وقبل كل شيء، يمكنك تحقيق هذا الهدف عن طريق ضبط مستوى التسجيلات خلال تشغيل الاختبارات. يمكنك تحديد مستوى التسجيلات من خلال سطر الأوامر عند تشغيل الاختبارات أو حتى داخل وحدة الاختبار نفسها.
على سبيل المثال، يمكنك تشغيل اختبارك باستخدام الأمر التالي:
bashpython -m unittest your_test_module.py -v --log-level=INFO
هنا، قمت بتحديد مستوى التسجيل إلى INFO
من خلال --log-level
.
ومن داخل وحدة الاختبار، يمكنك إجراء ذلك بالشكل التالي:
pythonimport unittest
import logging
class YourTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
logging.basicConfig(level=logging.INFO) # تحديد مستوى التسجيل هنا
def test_something(self):
# اختبارك هنا
pass
هذا يحدد مستوى التسجيل إلى INFO
عند بدء تشغيل الاختبارات.
وبناءً على ما تم ذكره، يمكنك تحقيق هدفك من خلال تحديد مستوى التسجيل بمرونة وفقًا لاحتياجاتك، إما من خلال سطر الأوامر أو من داخل الاختبارات نفسها، دون التأثير على إعدادات التسجيل الخاصة بالتطبيق الخاص بك.
المزيد من المعلومات
بالطبع، دعونا نعزز المعلومات حول تخصيص مستوى التسجيلات في وحدات الاختبار (unittest) بشكل أكبر.
-
استخدام مكتبة logging في Python:
يتيح لنا استخدام مكتبة logging في Python تحقيق التحكم الكامل في التسجيلات. يمكنك تكوين المسجلات وتعيين مستويات التسجيل بحرية تامة. على سبيل المثال، يمكنك إعداد ذلك في ملف تكوين خاص (logging.conf) واستخدامه عند تشغيل الاختبارات. -
استخدام الزيادات في سطر الأوامر:
يمكنك تحديد مستوى التسجيلات مباشرة من خلال سطر الأوامر عند تشغيل الاختبارات باستخدام مفتاح--log-level
، كما تم الذكر في الرد السابق. يُفضل تحديد مستوى التسجيل حسب احتياجات اختباراتك. -
التعامل مع مستويات التسجيل داخل الاختبارات:
يمكنك تحديد مستوى التسجيل داخل وحدة الاختبار نفسها باستخدامbasicConfig
كما تم ذكره سابقًا. يمكنك أيضًا استخدامunittest.TestCase
لتكوين تسجيلات مخصصة لكل اختبار.
pythonimport unittest
import logging
class YourTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
logging.basicConfig(level=logging.INFO) # تحديد مستوى التسجيل هنا
def test_something(self):
# اختبارك هنا
pass
-
الحفاظ على اعدادات التسجيل الأصلية:
قد يكون هناك حاجة للحفاظ على إعدادات التسجيل الأصلية للتطبيق أثناء تشغيل الاختبارات. في هذه الحالة، قد تحتاج إلى حفظ إعدادات التسجيل الحالية واسترجاعها بعد انتهاء الاختبار. -
تكامل مع أدوات إطار الاختبار:
يمكنك أيضًا استكشاف إمكانية تكامل مع أدوات إطار الاختبار الخاصة بك لتحديد مستوى التسجيلات بشكل ديناميكي وفقًا للاحتياجات الخاصة بكل اختبار.
في الختام، تخصيص مستوى التسجيلات في وحدات الاختبار يوفر مرونة كبيرة في التحكم في سجلات الإخراج وضبطها حسب متطلبات اختباراتك. استمر في استكشاف وتطوير تقنيات التسجيل التي تتناسب تمامًا مع سياق تطويرك واحتياجات اختباراتك.