Python - خيارات التكوين، كيفية الإدخال/التعامل معها؟

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

سؤال

عندما يستغرق التطبيق الخاص بك بعض المعلمات التكوين (~ 5) ، وسيتم استخدام التطبيق من قبل المستخدمين غير التقنيين (أي قبلة) ، كيف يمكنك عادةً التعامل مع خيارات القراءة ، ثم تتجول في المعلمات بين الكائنات/الوظائف (وحدات متعددة)؟

أمثلة الخيارات:أدلة الإدخال والإخراج/أسماء الملفات، ومستوى الإسهاب.

أنا عموما استخدام optparse (Python) وتمرير حول الخيارات/المعلمات كوسيط ؛لكنني أتساءل عما إذا كان من الشائع استخدام ملف نصي للتكوين يتم قراءته مباشرة بواسطة جميع كائنات الوحدات النمطية (ولكن بعد ذلك ، أليس هذا مثل وجود متغيرات "عالمية"؟ وبدون أي شخص يمتلك "الدولة"؟) .

هناك مشكلة نموذجية أخرى وهي اختبار الوحدة؛إذا كنت أرغب في اختبار وحدة كل وحدة واحدة بشكل مستقل ، فقد تتطلب وحدة معينة فقط 1 من خيارات التكوين 5 ؛كيف يمكنك عادة فصل الوحدات/الكائنات الفردية من بقية التطبيق ، ومع ذلك لا تزال تسمح له بقبول 1 أو 2 معلمات مطلوبة (هل يستدعي إطار اختبار الوحدة بطريقة ما أو يتولى وظيفة التكوين)؟

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

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

المحلول 2

"Counts answer"
Please update these counts and feel free to add/modify.

Do you usually read config options via:
- command-line/gui options : 1
- a config text file       : 0


How do multiple modules/objects have access to these options?
- they receive them from the caller as an argument: 1
- read them directly from the config text file:     0


When doing unit-testing of a single module (NOT the "main" module)
and the module uses one option, e.g. input filename:
- unit-test framework provides own "simplified" config functionality: 0
- unit-test framework invokes main app's config functionality:        1


Do you use:
- optparse:  1
- getopt:    0
- others?


Please list any config management "design pattern" 
(usable in Python) and add a count if you use it - thanks.
- 
-

نصائح أخرى

هل تقرأ عادةً خيارات التكوين عبر:- خيارات سطر الأوامر/واجهة المستخدم الرسومية - ملف نصي التكوين

كلاهما.نحن نستخدم إعدادات Django.py وlogging.ini.نستخدم أيضًا خيارات سطر الأوامر والوسائط للخيارات التي تتغير بشكل متكرر.

كيف يمكن للوحدات/الكائنات المتعددة الوصول إلى هذه الخيارات؟

  • settings.py;logging.ini -- لا أستطيع أن أقول.
  • خياراتنا خاصة بالبرنامج الرئيسي، وتستخدم للبناء
    وسيطات للوظائف أو مُهيئات الكائنات.

[تعد مشاركة خيارات optparse بمثابة ألم كبير في الرقبة ولا داعي لربط الكثير من الأشياء في فوضى لا يمكن اختبارها.]

عند إجراء اختبار الوحدة لوحدة واحدة (وليس الوحدة "الرئيسية"):(على سبيل المثالخيار القراءة الذي يحدد اسم ملف الإدخال)

[لا أستطيع تحليل السؤال.أفترض أن هذا هو "كيف يمكنك الاختبار عندما تكون هناك خيارات؟"]

الجواب هو - نحن لا نفعل ذلك.نظرًا لأن الطريقة الرئيسية فقط هي التي تقوم بتحليل خيارات سطر الأوامر، فلا توجد وحدة أو وظيفة أو فئة أخرى لديها أي فكرة عن خيارات سطر الأوامر.لا توجد هذه الوحدة "تتطلب 1 من خيارات التكوين الخمسة" تحتوي فئات (أو وظائف) الوحدة على وسيطات عادية وهذا كل شيء.

نحن نستخدم فقط optparse.

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