cb
codebamin
الفصل 9 · الدوال البرمجية (Functions)

اختبار نتائج الدوال

عندما تكتب دالة، اختبرها بأمثلة تعرف نتيجتها مسبقًا. يوفر Codebamin أداة تعليمية صغيرة اسمها check_result(actual, expected). تقارن الأداة بين القيمة التي أنتجها الكود والقيمة التي توقعتها. إذا تطابقت القيمتان يستمر التنفيذ، وإذا اختلفتا تحصل على خطأ واضح.

def double(x):
    return x * 2

check_result(double(3), 6)
check_result(double(10), 20)

الاختبار المفيد يجب أن يفشل أيضًا عندما تكون الدالة خاطئة. غيّر double مؤقتًا بحيث تعيد قيمة غير صحيحة، ثم شغّل استدعاءات check_result نفسها واقرأ رسالة الخطأ. بعد ذلك أعد تنفيذ الدالة الصحيح.

أكمل القيم المتوقعة في الاختبارين التاليين:

def double(x):
    return x * 2

def quadruple(x):
    return double(double(x))

check_result(quadruple(2), ...)
check_result(quadruple(5), ...)

استبدل كل ... بالنتيجة الصحيحة التي يجب أن تعيدها quadruple.

من فوائد الاختبارات أيضًا أن أي شخص يستطيع قراءتها وفهم أمثلة واضحة وغير ملتبسة عن وظيفة الدالة. وهذا مفيد خصوصًا عندما يصعب وصف الدالة بالكلمات.

مثلًا، انظر إلى الاختبارين:

check_result(surround("more", "++"), "++more++") check_result(surround("the same", "="), "=the same=")

لا نحتاج إلى شرح طويل لما تفعله surround؛ الأمثلة توضحه مباشرة.

اكتب دالة surround تجتاز هذين الاختبارين، وتبدأ هكذا:

def surround(string, sides):

ممتاز! اكتب الآن دالة alert تجتاز الاختبارين التاليين:

check_result(alert("Warning", 2), "!! Warning !!") check_result(alert("DANGER", 4), "!!!! DANGER !!!!")

لا يُسمح لجسم alert أن يحتوي على العامل +. استخدم الدالة surround بدلًا منه. يجب أن تبدأ الدالة هكذا:

def alert(string, level):

الفكرة أن تحيط النص أولًا بالمسافات، ثم تضيف زوجًا من علامات التعجب في كل دورة حتى تصل إلى المستوى المطلوب، مع استخدام القيمة التي تعيدها surround في كل مرة.

عمل ممتاز! أساليب الاختبار التي تعلمتها ستصبح مفيدة جدًا في الدروس القادمة.

solution.py
1
2
3
4
5
6
7
8
9
10
الطرفية (shell)
>>>