اذهب إلى المحتوى

السؤال

نشر

قمت بكتابة بعض إختبارات Unit Tests في أحد مشاريع جانغو Django الخاصة بي، وقمت بكتابة إختبار لأحد الصفحات ولكن لم أنشيء هذه الصفحة بعد، وأريد أن يتم تخطي هذا الأختبار عند تشغيل كل الإختبارات عندما أقوم أقوم بتنفيذ الأمر manage.py test 

هل توجد طريقة لتخطي إختبار معين بدلًا من إزالته يدويًا؟

Recommended Posts

  • 1
نشر

تحتوي الوحدة unittest في Python على مجموعة من الزخرفات (decorators) التي تسمح لك بتخطي إختبارٍ ما:

  • الزخرفة skip: يُمكن إستخدامها مع الإختبارات الفردية:
class MyTestCase(unittest.TestCase):

    @unittest.skip("demonstrating skipping") # نقوم بوضع الزخرفة فوق الدالة 
    def test_nothing(self):
        self.fail("shouldn't happen")

  أو مع مجموعة من الإختبارات تحت صنف واحد:

@unittest.skip("showing class skipping") #نقوم بوضع الزخرفة فوق الصنف
class MySkippedTestCase(unittest.TestCase):
    def test_not_run(self):
        pass
  • الزخرفة skipIf: تعمل نفس عمل الزخرفة skip لكن إذا تحقق شرطٌ ما.
class MyTestCase(unittest.TestCase):

    @unittest.skipIf(mylib.__version__ < (1, 3), "not supported in this library version")
    def test_format(self):
        # إختبار يعمل فقط في نسخ ذات إصدارات معينة
        pass

كما يُمكنك إستخدام الزخرفة tag من الوحدة django.test والتي تسمح بوضع علامة على الإختبار حتى يقوم جانغو بتخطيه

from django.test import tag

class SampleTestCase(TestCase):

    @tag('fast') #علامة سريع 
    def test_fast(self):
        ...

    @tag('slow') # علامة بطيئ
    def test_slow(self):
        ...

    @tag('slow', 'core') # علامات مختلفة
    def test_slow_but_core(self):
        ...

لتخطي الإختبارات التي تحمل علامة معينة نقوم بتنفيذ الأمر:

python manage.py test --exclude-tag=slow #مثلا تخطينا الإختبارات التي تحمل العلامة بطيئ

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...