التحقق من الاستثناءات في بايثون باستخدام doctest

عند كتابة التعليمات البرمجية في بايثون، غالبًا ما نحتاج إلى ضمان أن دوالنا تعمل كما هو متوقع، خاصة عندما يتعلق الأمر بالتعامل مع الأخطاء. أحد السيناريوهات الشائعة هو اختبار ما إذا كانت دالة معينة تثير استثناءًا تحت ظروف معينة. إذا كنت تستخدم وحدة doctest في بايثون لإجراء اختباراتك، قد تتساءل: هل يمكنني التحقق من أن استثناءً ما يُرمى باستخدام doctest؟ الإجابة هي نعم مدوية! دعونا نستكشف كيف نستخدم doctest للتحقق من الاستثناءات في دوال بايثون الخاصة بك.

المشكلة: اختبار الاستثناءات

لنعتبر دالة تسمى foo(x). هذه الدالة مصممة لإثارة استثناء إذا كان معاملها أقل من الصفر. السؤال الرئيسي هنا هو كيف نكتب doctest تؤكد على أن الدالة تعمل بشكل صحيح في هذا السيناريو. بالتحديد، عندما نمرر قيمة أقل من الصفر، نريد التأكد من إثارة استثناء للإشارة إلى أن هناك خطأ ما.

مثال على الدالة

إليك نسخة بسيطة من دالة foo(x):

def foo(x):
    if x < 0:
        raise ValueError("يجب أن تكون x غير سالبة")
    return x

الحل: كتابة doctest

لإنشاء doctest يتحقق من الاستثناءات، سنستخدم النهج التالي. في doctest الخاص بنا، يمكننا تحديد أننا نتوقع أن يتم إثارة استثناء عند استدعاء foo() بقيمة يجب أن تُثير الخطأ. إليك كيف نفعل ذلك خطوة بخطوة:

الخطوة 1: كتابة الاختبار

في وثيقة الدالة، يمكنك إضافة حالة اختبار توضح الاستثناء المتوقع. إليك كيف تبدو:

def foo(x):
    """
    ترجع x إذا كانت غير سالبة.
    
    تثير:
        ValueError: إذا كانت x < 0.
    
    أمثلة:
    >>> foo(-1)
    Traceback (most recent call last):
      ...
    ValueError: يجب أن تكون x غير سالبة
    >>> foo(3)
    3
    """
    if x < 0:
        raise ValueError("يجب أن تكون x غير سالبة")
    return x

الخطوة 2: تشغيل الاختبار

لتشغيل doctest، قم بإضافة الشيفرة التالية في أسفل نص بايثون الخاص بك:

if __name__ == "__main__":
    import doctest
    doctest.testmod()

الخطوة 3: الناتج المتوقع

عندما تقوم بتشغيل النص، ستقوم doctest بمعالجة الأمثلة في وثيقة الدالة. إذا كانت كل الأمور تعمل بشكل صحيح، فلن ترى أي ناتج (مما يشير إلى أن جميع الاختبارات نجحت). إذا لم يتم إثارة الاستثناء كما هو متوقع، ستقوم doctest بالإبلاغ عن خطأ.

موارد إضافية

للحصول على مزيد من المعلومات حول كيفية استخدام doctest بفعالية في وحداتك، تحقق من وثائق وحدة doctest الرسمية.

الخاتمة

استخدام doctest للتحقق من أن الاستثناءات تُثار بشكل صحيح ليس مجرد أمر ممكن؛ بل هو بسيط! من خلال إضافة بضع أسطر في وثيقة دالتك، يمكنك توثيق واختبار سلوك الكود الخاص بك بفعالية، مما يضمن التزامه بالنماذج المتوقعة. سواء كنت تكتب دوال جديدة أو تختبر دوال موجودة، توفر لك doctest وسيلة قوية لإضافة اختبارات مدفوعة بالأمثلة مباشرة بجانب كودك. استمتع بجعل كودك قويًا، وتمنياتنا لك بالتوفيق في البرمجة!