التحقق من الاستثناءات في بايثون باستخدام 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
وسيلة قوية لإضافة اختبارات مدفوعة بالأمثلة مباشرة بجانب كودك. استمتع بجعل كودك قويًا، وتمنياتنا لك بالتوفيق في البرمجة!