سؤال

أنا مبتدئ نوعًا ما في اختبار وحدة بايثون، وخاصة Cover.py.هل من المرغوب فيه أن تتضمن تقارير التغطية تغطية ملفات الاختبار الفعلية الخاصة بك؟

وهنا لقطة من بلدي تقرير HTML كمثال.

يمكنك أن ترى أن التقرير يتضمن tests/test_credit_card.في البداية كنت أحاول حذف tests/ الدليل من التقارير، مثل ذلك:

coverage html --omit=tests/ -d tests/coverage

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

هل يستطيع اي شخص ان يسلط الضوء على هذا؟

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

المحلول

يحرر: أعتقد أنني أتفق الآن مع التعليق أدناه حول عدم كونه فكرة جيدة لخلط اختبار رمز الإنتاج الخاص بك مع اختبار رمز الاختبار الخاص بك.لا يمكنني حذف إجابة مقبولة لذا سأتركها دون تغيير.

** يرجى التصويت السلبي على إجابتي! **


إنها فكرة جيدة أن ترى تغطية اختباراتك لأنها يمكن أن تشير إلى مشاكل.إذا لم يتم تشغيل رمز الاختبار الخاص بك، فلن يكون هناك فائدة كبيرة من كتابته!

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

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

وإذا كان لديك رمز اختبار لم تعد هناك حاجة إليه حقًا، فمن الجيد دائمًا حذفه!

نصائح أخرى

وcoverage html --omit="*/test*" -d tests/coverage

إنشاء ملف .coveragerc في المجلد الجذر المشروع الخاص بك، وتشمل ما يلي:

[run]
omit = *tests*

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

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