Python - параметры конфигурации, как вводить / обрабатывать? - PullRequest
3 голосов
/ 20 июня 2009

Когда ваше приложение принимает несколько (~ 5) параметров конфигурации, и приложение собирается для использования не-технологическими пользователями (т.е. KISS ), как вы обычно справляетесь с чтением параметры конфигурации, а затем передача параметров между объектами / функциями (несколько модулей)?

Примеры параметров: входные и выходные каталоги / имена файлов, уровень детализации.

Я обычно использую optparse (Python) и передаю параметры / параметры как аргументы; но мне интересно, если это более распространенное использование текста конфигурации файл, который читается непосредственно объектами всех модулей (но не так ли как наличие «глобальных» переменных? и без «владения» государством?).

Другая типичная проблема - модульное тестирование; если я хочу провести модульное тестирование каждого один модуль независимо, конкретный модуль может потребовать только 1 из 5 вариантов конфигурации; как вы обычно отделяете человека модули / объекты из остальной части приложения, и все же позволяют ему принять 1 или 2 обязательных параметра вызвать или взять на себя функциональность конфигурации)?

Я думаю, что не существует единственно правильного способа сделать это, но это Интересно почитать о различных подходах или известных шаблонах.

Ответы [ 2 ]

2 голосов
/ 20 июня 2009

Вы обычно читаете параметры конфигурации через: - параметры командной строки / графического интерфейса - текстовый файл конфигурации

Оба. Мы используем Django settings.py и logging.ini. Мы также используем параметры командной строки и аргументы для параметров, которые изменяются наиболее часто.

Как несколько модулей / объектов имеют доступ к этим параметрам?

  • settings.py; logging.ini - не могу сказать.
  • Наши опции являются частными для основной программы и используются для сборки
    аргументы функций или инициализаторы объектов.

[Совместное использование альтернативных вариантов - большая боль в шее, и излишне связывает многие вещи в непроверяемый беспорядок.]

При выполнении юнит-тестирования одного модуля (НЕ «основного» модуля): (например, опция чтения с указанием имени файла)

[Я не могу разобрать вопрос. Я предполагаю, что это «как вы тестируете, когда есть варианты?»]

Ответ - мы не делаем. Поскольку только метод main анализирует параметры командной строки, ни один другой модуль, функция или класс не имеет представления о параметрах командной строки. Там нет этого модуля "требуется 1 из 5 опций конфигурации" Классы (или функции) модуля имеют обычные аргументы, и все.

Мы используем только optparse.

0 голосов
/ 20 июня 2009
"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.
- 
-
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...