البرنامج التعليمي لـ PyUnit: Python إطار اختبار الوحدة (مع مثال)

⚡ ملخص ذكي

Python يُتيح اختبار الوحدات فحص أجزاء صغيرة من التعليمات البرمجية بشكل منفصل لاكتشاف الأخطاء مبكرًا. ستتعلم هنا تقنيات اختبار الوحدات، وإطار عمل PyUnit (unittest)، وفئاته الرئيسية، وكيفية تصميم حالة اختبار، بالإضافة إلى مثال عملي.

  • 🧪 ما هو : تتحقق اختبارات الوحدات من صحة وحدات صغيرة ومعزولة من التعليمات البرمجية لاكتشاف الأخطاء مبكراً.
  • 🔬 تقنية: تعمل تقنيات TDD والنماذج الأولية والمحاكاة على عزل التعليمات البرمجية بحيث يتم اختبار الوحدات بشكل مستقل.
  • 🐍 بييونيت: Pythonوحدة اختبار الوحدات المدمجة (PyUnit) هي نسخة من JUnit.
  • 🧱 الفئات الرئيسية: TestCase و TestSuite و TestLoader و TextTestRunner و TestResults.
  • 🤖 مساعدة الذكاء الاصطناعي: تُنشئ أدوات الذكاء الاصطناعي مثل Copilot حالات اختبار الوحدة على الفور.

Python وحدة التجارب

ما هو اختبار الوحدة؟

وحدة التجارب in Python يتم ذلك لتحديد الأخطاء في وقت مبكر من مرحلة تطوير التطبيق عندما تكون الأخطاء أقل تكرارًا وأقل تكلفة لإصلاحها.

اختبار الوحدة هو اختبار مستوى الكود المكتوب الذي تم تصميمه في Python للتحقق من "وحدة" صغيرة من الوظائف. اختبار الوحدة هو إطار عمل موجه للكائنات يعتمد على تركيبات الاختبار.

Python تقنيات اختبار الوحدة

Python يتضمن اختبار الوحدة بشكل أساسي اختبار وحدة معينة دون الوصول إلى أي كود تابع. يمكن للمطورين استخدام تقنيات مثل النماذج والنماذج لفصل التعليمات البرمجية إلى "وحدات" وإجراء اختبار مستوى الوحدة على القطع الفردية.

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

    نوايا كلا الطريقتين هي نفسها للقضاء على اختبار كافة تبعيات فئة أو وظيفة.

Python إطار اختبار الوحدة

لتسهيل عملية اختبار الوحدة وتحسين جودة مشروعك، يوصى بـ Python إطار اختبار الوحدة. يتضمن إطار اختبار الوحدة

Python تقنيات اختبار الوحدة

  • بييونيت: يدعم PyUnit التركيبات وحالات الاختبار ومجموعات الاختبار ومشغل الاختبار للاختبار الآلي للتعليمات البرمجية. في PyUnit، يمكنك تنظيم حالات الاختبار في مجموعات لها نفس التركيبات
  • أنف: تساعدك المكونات الإضافية المضمنة في Nose في التقاط المخرجات وتغطية التعليمات البرمجية والمستندات وما إلى ذلك. إن بناء جملة Nose أبسط جدًا ويقلل من العوائق التي تحول دون كتابة الاختبارات. يمتد Python Unittest لتسهيل الاختبار.
  • الوثيقة : يتم إدخال البرنامج النصي لاختبار Doctest في سلسلة المستندات مع وظيفة صغيرة في أسفل الملف. يسمح لك Doctest باختبار التعليمات البرمجية الخاصة بك عن طريق تشغيل الأمثلة المضمنة في الوثائق والتحقق من أنها أعادت النتائج المتوقعة. حالة استخدام doctest أقل تفصيلاً ولا تلتقط حالات خاصة. وهي مفيدة كتوثيق معبر لحالة الاستخدام الرئيسية للوحدة ومكوناتها.

اختبار الوحدة باستخدام PyUnit

بيونت هو Python من الميناء JUnit. كجزء من Pyunit، يوجد في وحدة Unittest خمس فئات رئيسية.

اختبار الوحدة باستخدام PyUnit

  • فئة TestCase: تحمل فئة TestCase إجراءات الاختبار وتوفر خطافات لإجراء كل روتين والتنظيف بعد ذلك
  • فئة TestSuite: إنه بمثابة حاوية تجميع، ويمكن أن يمتلك كائنات اختبارية متعددة وكائنات اختبارية متعددة
  • فئة محمل الاختبار: يقوم هذا الفصل بتحميل حالات الاختبار والمجموعات المحددة محليًا أو من ملف خارجي. تنبعث منها كائنات اختبارية تمتلك تلك الأجنحة والحالات
  • فئة TextTestRunner: لإجراء الاختبارات، فإنه يوفر منصة قياسية لتنفيذ الاختبارات
  • فئة نتائج الاختبار: يقدم حاوية قياسية لنتائج الاختبار

تصميم حالة اختبار ل Python الاختبار باستخدام PyUnit

يوفر اختبار الوحدة فئة أساسية، وحالة اختبار، والتي يمكن استخدامها لإنشاء حالات اختبار جديدة. لتصميم حالة الاختبار، هناك ثلاث مجموعات من الأساليب المستخدمة

تصميم حالة اختبار ل Python

unittest. اختبار

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

في المجموعة الأولى توجد خطافات الاختبار القبلي والبعدي. تبدأ طريقة الإعداد () قبل كل روتين اختبار، وتبدأ عملية التفكيك () بعد الروتين.

تتحكم المجموعة الثانية من الأساليب في تنفيذ الاختبار. تأخذ كلتا الطريقتين سلسلة رسائل كمدخل، وكلاهما يلغي اختبارًا مستمرًا. لكن طريقة Skiptest () تُجهض الاختبار الحالي بينما تفشل طريقة Fail () تمامًا.

الطريقة الأخيرة أو الثالثة تساعد في تحديد الاختبار. يقوم معرف الطريقة () بإرجاع سلسلة تتكون من اسم كائن حالة الاختبار وروتين الاختبار. والطريقة مختصرةDescriptتقوم الدالة ion()‎ بإرجاع تعليق docstr عند بدء كل روتين اختبار.

Python مثال على اختبار الوحدة

يختبر المثال أدناه دالة add() بسيطة باستخدام وحدة unittest. يتم تشغيل كل دالة تحمل البادئة test_ تلقائيًا، وتتحقق دالة assertEqual من النتيجة مقابل القيمة المتوقعة.

import unittest

def add(a, b):
    return a + b

class TestAdd(unittest.TestCase):
    def test_add_positive(self):
        self.assertEqual(add(2, 3), 5)

    def test_add_negative(self):
        self.assertEqual(add(-1, -1), -2)

if __name__ == "__main__":
    unittest.main()

احفظ الكود وشغّله باستخدام الأمر python filename.py. سيُبلغك برنامج تشغيل وحدة الاختبار بعدد الاختبارات الناجحة والفاشلة.

مزايا الاستخدام Python اختبار وحدة

  • يساعدك على اكتشاف الأخطاء في وقت مبكر من دورة التطوير
  • يساعدك على كتابة برامج أفضل
  • يتزامن بسهولة مع طرق وأدوات الاختبار الأخرى
  • سيكون بها عدد أقل من الأخطاء
  • من الأسهل تعديله في المستقبل بعواقب أقل جدًا

الأسئلة الشائعة

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

PyUnit هو Pythonإطار اختبار الوحدات المدمج، والمتوفر كوحدة unittest. وهو نسخة معدلة من JUnit ويدعم التجهيزات، وحالات الاختبار، والمجموعات، وبرنامج تشغيل الاختبار.

أنشئ فئة فرعية من unittest.TestCase، واكتب الدوال التي تبدأ بـ test_، واستخدم عبارات التأكيد مثل assertEqual داخلها. شغّل الملف باستخدام unittest.main() لتنفيذ جميع الاختبارات.

يتم تشغيل الدالة setUp() قبل كل طريقة اختبار لإعداد البيانات، بينما يتم تشغيل الدالة tearDown() بعد كل اختبار لتنظيف البيانات. يضمن هذان الإجراءان معًا استقلالية الاختبارات وقابليتها للتكرار.

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

تقوم المساعدات المدعومة بالذكاء الاصطناعي مثل GitHub Copilot بإنشاء حالات اختبار الوحدة من دالة، واقتراح الحالات الشاذة والتأكيدات، وإنشاء نماذج وهمية للتبعيات أثناء كتابة التعليمات البرمجية.

نعم. يمكن للأدوات المدعومة بالذكاء الاصطناعي أتمتة إنشاء مجموعات الاختبار، وإنتاج تأكيدات للمخرجات المتوقعة، وزيادة تغطية التعليمات البرمجية من خلال اقتراح اختبارات للفروع غير المختبرة.

اختبار الوحدة هو Pythonيستخدم إطار عمل 's المدمج الفئات وطرق التأكيد، بينما pytest مكتبة خارجية تحتوي على عبارات تأكيد أبسط وتجهيزات قوية. كلاهما يُشغّل اختبارات الوحدة.

تلخيص هذه التدوينة بـ: