質問

アプリケーションがいくつかの(〜5)構成パラメーターを取り、アプリケーションが 非テクノロジーユーザー(つまり、 KISS )が使用するために、通常どのように読書を処理しますか 設定オプション、およびオブジェクト/関数間でパラメーターを渡す (複数のモジュール)?

オプションの例:入力および出力ディレクトリ/ファイル名、詳細レベル。

通常、 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オプションの共有は首の大きな痛みであり、多くの物をテストできない混乱に不必要に結びつけます。]

単一のモジュール(「メイン」モジュールではなく)の単体テストを行う場合: (例:入力ファイル名を指定する読み取りオプション)

[質問を解析できません。これは、「オプションがあるときにどのようにテストしますか?」

だと思います

答えは、そうではありません。 mainメソッドのみがコマンドラインオプションを解析するため、他のモジュール、関数、またはクラスはコマンドラインオプションを認識しません。このモジュールはありません" 5つの設定オプションのうち1つが必要です ''モジュールのクラス(または関数)には通常の引数があり、それがそれです。

optparse のみを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top