سؤال

في القليل من الثعبان، أكتب (أداة قيادة واختبار التصفية: كلو) أردت طريقة بسيطة لاستدعاء جناح الاختبار المدمج (doctest.) قررت ما يلي:

if 'DOCTEST' in os.environ and os.environ['DOCTEST']==sys.argv[0]:
    _runDocTests()
    sys.exit()

وبالتالي، إذا تم تعيين متغير Doctest لبعض البرنامج الآخر، فسأتجاهله. في الواقع اختباري لهذا هو فقط: doctest =. / claft ./claft أو إذا كنت أريد أن أكون مطالبا، يمكنني استخدامه: Doctest =. / Claft Verbose = 1./claft لذلك حتى لو غادرت Doctest =. / Claft بيئتي لن يتم تشغيل رمز الاختبار فقط عندما استدعاء برنامجي من داخل الدليل الخاص به. إذا قمت بالتحول إلى أحد أجنحة الاختبار الخاصة بي واستدعائه باستخدام مسار نسبي ثم أنا آمن من تشغيل هذه الوظيفة عن غير قصد.

هل استخدم أي شخص آخر هذا النوع من الاتفاقية؟

ما هي الاقتراحات الأخرى أو أفضل الممارسات لتجنب النزاعات بين أسماء متغير البيئة؟ لتوفير الوصول "المخفي" إلى اختبار وظيفة تسخير؟

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

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

المحلول

نظرا لأنك تقوم بالفعل بتحليل سطر الأوامر، فلماذا لا تضيف فقط --selftest اختيار؟ لن تقلق بشأن أي صراعات بهذه الطريقة، وسوف يكون الاحتجاج أسهل.

نصائح أخرى

اخر اختراق طريقة لتجنب تعارض مساحة الاسم مع البيئة: يبحث عن myprogname_debug أو مثل.

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