🧠 ما اختبار البرمجيات؟
اختبار البرمجيات هو عملية التحقق من أن الشيفرة تعمل كما هو متوقع. يُستخدم الاختبار الوحدوي Unit Testing لاختبار أجزاء صغيرة من البرنامج (مثل الدوال أو الكلاسات) بشكل مستقل.
🧰 مكتبة unittest
تأتي Python مع مكتبة مدمجة تُسمى unittest تُستخدم لكتابة اختبارات لوحدات الشيفرة.
🧪 مثال بسيط:
1. لدينا ملف calculator.py فيه دوال جمع وطرح:
# calculator.py
def add(x, y):
return x + y
def subtract(x, y):
return x - y
2. نكتب ملف اختبار اسمه test_calculator.py:
# test_calculator.py
import unittest
import calculator # نستورد الملف الذي نريد اختباره
class TestCalculator(unittest.TestCase):
def test_add(self):
self.assertEqual(calculator.add(2, 3), 5)
self.assertEqual(calculator.add(-1, 1), 0)
def test_subtract(self):
self.assertEqual(calculator.subtract(10, 5), 5)
self.assertEqual(calculator.subtract(0, 7), -7)
if __name__ == '__main__':
unittest.main()
✅ شرح أهم الدوال في unittest:
| الدالة | الوصف |
|---|---|
assertEqual(a, b) |
يتحقق أن a == b |
assertTrue(x) |
يتحقق أن x هو True |
assertFalse(x) |
يتحقق أن x هو False |
assertRaises(Error) |
يتحقق من أن دالة معينة تثير استثناء معين |
✅ تمرين تطبيقي
✍️ المطلوب:
اكتب ملف يحتوي على دالة اسمها multiply(x, y) تقوم بضرب رقمين. ثم اكتب اختبارًا لها باستخدام unittest.
✅ الحل:
math_utils.py
def multiply(x, y):
return x * y
test_math_utils.py
import unittest
import math_utils
class TestMathUtils(unittest.TestCase):
def test_multiply(self):
self.assertEqual(math_utils.multiply(3, 4), 12)
self.assertEqual(math_utils.multiply(-2, 5), -10)
self.assertEqual(math_utils.multiply(0, 100), 0)
if __name__ == '__main__':
unittest.main()
لتشغيل الاختبار:
python test_math_utils.py

