0

I'm working on a program which has a config. I need to use a different config for the tests and the normal running of the program.

I manage all the software and tests using a manage.pyscript and all the tests are under python manage.py test ... (eg: python manage.py test all, python manage.py test db, ...)

To choose the config I did in the __init__.py of the config:

is_testing = sys.argv[1] == 'test'
if is_testing:
    from app.config.own import TestConfig as Config
else:
    from app.config.own import Config

and after I import the config from this file.

But sometime the test runner takes the first place in the argv so the test is in argv[2] or sometimes I run the tests by launching the script directly and not the manage.py.

My question is by which ways can I share a variable across the full codebase?

Thanks.

4

1 に答える 1

3

構成クラスから決定構成を完全に抽出し、実行する構成パスの CLI 引数をスクリプトに受け入れるようにすることができます。これにより、任意の構成を使用できるようになります。

python manage.py test --config=import.path.to.settings

次に、構成を実際のモジュールのロードにマップする必要があります。Django はファイルを使用してこれとまったく同じことを行いsettingsます。実装の詳細については、それを参照してください。


また、 を使用することをお勧めします。これにより、型の強制、ドキュメントの生成、位置およびキーワード引数のサポートを提供することargsparseに対処する必要がなくなりますsys.argv[1]

于 2015-07-22T15:07:27.463 に答える