문제

애플리케이션이 몇 가지 (~ 5) 구성 매개 변수를 사용하고 응용 프로그램을 비 기술 사용자가 사용합니다 (예 : 키스), 일반적으로 읽기 구성 옵션을 처리 한 다음 객체/함수 (여러 모듈) 사이의 매개 변수를 전달합니까?

옵션 예제 : 입력 및 출력 디렉토리/파일 이름, 구두 수준.

나는 일반적으로 사용합니다 optparse (Python) 및 옵션/매개 변수를 인수로 전달합니다. 그러나 모든 모듈의 객체에서 직접 읽는 구성 텍스트 파일을 사용하는 것이 더 일반적인지 궁금합니다 (그러나 이것은 '글로벌'변수를 가지고 있지 않습니까? .

또 다른 일반적인 문제는 단위 테스트입니다. 각 단일 모듈을 독립적으로 단위 테스트하려면 특정 모듈은 5 개의 구성 옵션 중 1 개만 필요할 수 있습니다. 일반적으로 나머지 응용 프로그램에서 개별 모듈/객체를 어떻게 분리하지만 여전히 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.
- 
-

다른 팁

일반적으로 다음을 통해 구성 옵션을 읽습니까? - 명령 줄/GUI 옵션 - 구성 텍스트 파일

둘 다. 우리는 django의 settings.py 및 logging.ini를 사용합니다. 또한 가장 자주 변경되는 옵션에 대한 명령 줄 옵션과 인수를 사용합니다.

여러 모듈/객체가 이러한 옵션에 어떻게 액세스 할 수 있습니까?

  • settings.py; logging.ini- 말할 수 없습니다.
  • 우리의 옵션은 기본 프로그램에 비공개이며 구축하는 데 사용됩니다.
    함수 또는 객체 초기화에 대한 인수.

OptParse 옵션을 공유하는 것은 목에 큰 고통이며 불필요한 것들을 테스트 할 수없는 혼란에 묶습니다.

단일 모듈의 단위 테스트를 수행 할 때 ( "기본"모듈 아님) : (예 : 읽기 옵션 입력 파일 이름 지정)

나는 질문을 구문 분석 할 수 없다. 나는 이것이 "옵션이있을 때 어떻게 테스트합니까?"라고 가정합니다.

대답은 - 우리는 그렇지 않습니다. 기본 메소드 만 명령 줄 옵션을 구문 분석하므로 다른 모듈, 함수 또는 클래스에는 명령 줄 옵션에 대한 아이디어가 없습니다. 이 모듈은 "5 가지 구성 옵션 중 1 개 요구 사항"이 없습니다. 모듈의 클래스 (또는 함수)에는 일반적인 인수가 있으며 그게 바로 그 것입니다.

우리는 만 사용합니다 optparse.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top