في Django ، متى يجب أن أستخدم Doctests بدلاً من اختبار الوحدة؟

StackOverflow https://stackoverflow.com/questions/4251381

سؤال

من عند مستندات Django:

... لا يتم تحديث قاعدة البيانات بين الدكتوراه ، لذلك إذا كانت الدكتوراه تتطلب حالة معينة ، فيجب عليك التفكير في مسح قاعدة البيانات أو تحميل تركيبات.

بصراحة تامة ، يتم حاليا 90 ٪ من الاختبارات الخاصة بي في الدكتوراه. اعتقد زميل لي أنه كان غريب. بكل صدق ، أقوم بإجراء اختبارات قليلة جدًا ، لذا لا أدعي أنه سيد هذا المجال.

هل لدى أي شخص قاعدة عامة يستخدمونها عند تحديد كيفية الاختبار؟

إجابة غير

اقترح زميل لي لاختبار وظائف النموذج والقيود كدقيق ووجهات نظر عبر اختبارات الوحدة. كيف هذا الصوت لقاعدة الإبهام؟

هل كانت مفيدة؟

المحلول

مع نمو مشروعك ، ستجد أن الاختبارات غير المتوفرة أفضل بكثير لاختبار الكود الخاص بك.

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

الميزة الأخرى التي تتمتع بها أهمها هي أنها أسهل بكثير في الحفاظ عليها. نظرًا لأن حالة الاختبار بأكملها قائمة بذاتها ، فإنك إما تكتب حالة اختبار أخرى ، أو تعديل وظيفة الاختبار الصغيرة المستهدفة التي تناسبها.

تميل الدكتوراه إلى العمل عن طريق التطور - يمكنك الحصول على مثيل عن القطعة الخاصة بك ، وإضافة الفراء الأخضر ، وتأكد من أن الفراء أخضر ، وإضافة 4 أرجل ، وتأكد من أن لديك 4 أرجل وفراء أخضر ، إضافة إبهام ، تأكد ، 4 أرجل ، والفراء الأخضر ، إلخ ... هذا يعني أنه إذا كنت ترغب في إضافة اختبار مباشرة بعد مرحلة الفراء الأخضر ، فيجب عليك تعديل النتائج المتوقعة لكل حالة اختبار أخرى.

لا تريد أن تفعل كل هذه إعادة الكتابة ، لذلك يمكنك إضافة الاختبار الجديد في النهاية. ثم تضيف آخر ، وبعد فترة من الوقت يتم تخليص الاختبارات الخاصة بك بشكل يائس ، لا يمكنك معرفة ما إذا كانت ميزة محددة قد تم اختبارها أم لا! مع عدم وجود اختبارات ، نظرًا لأن كل اختبار يجسد فكرة محددة وملموسة ومحدودة ، فمن الأسهل بكثير إعادة ترتيب الاختبارات منطقياً ، وإضافة اختبار جديد لا يعتمد على جميع الاختبارات السابقة. بالإضافة إلى ذلك ، إذا غيرت الطريق add_green_fur() الأعمال ، ليس عليك تعديل العشرات من نتائج حالة الاختبار.

الميزة الأخرى هي أن الاختبارات غير المألوفة (عند كتابتها جيدًا) تخبرك بدقة أين فشل الكود الخاص بك. Failed: MyWidget.tests.test_green_fur() من الأسهل بكثير تصحيح تصحيح "فشل اختبار القطعة في السطر 384" ، والذي غالبًا ما يكون العشرات إلى مئات الخطوط بعيدًا عن نقطة الفشل الفعلية.

بشكل عام ، لا تتولى من غيرها طريقة أفضل للاختبار.

تعديل:

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

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

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

لا يمكنك كتابة اختبارات جيدة تعمل أيضًا كوثائق جيدة.

نصائح أخرى

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

باختصار ، استخدم اختبارات الوحدة لاختبار الرمز والأثرياء لاختبار الوثائق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top