2016-06-27 5 views
0

私はdjangoアプリケーションで使用されている設定ファイルにパッチを適用しようとしています。私はDjangoがここではあまり関連性があるとは思わないが、このファイル構造を部分的に駆動する。私が正しく、このコンフィグ設定にパッチを適用するにはどうすればよいpythonで別の名前としてインポートされた設定ファイルにパッチを当てる

アプリ/ views.py

from . import config as APP_CONFIG 
...later on in some function... 
retry_count = APP_CONFIG.MAX_NUMBER_RETRIES 

アプリ/ config.py

MAX_NUMBER_RETRIES = 1 

私のテスト機能では@patch('app.views.CONFIG.MAX_NUMBER_RETRIES', 1)または@patch('app.config.MAX_NUMBER_RETRIES', 1)の品種を使用してみました(私はpytestを使用しています)。

答えて

0

これは動作するはずです:

@patch('app.views.APP_CONFIG.MAX_NUMBER_RETRIES', 1) 

私は(ジャンゴなし)小さな例でそれを試してみましたが、期待どおりに働きました。これは恐らくpytestではなくモックに関連しています。ドキュメント:Where to patchをご覧ください。

+0

これは私にとってはうまくいかず、テストが実行される前にこれをインポートするのであれば、パッチ値が有効にならないのでしょうか?より正確には、私の例では、クラスの属性を設定するために値を使用しています(djangoのListView)。 – Chris

+0

私はそれを動作させることができませんでしたが、それはDjangoなので、私はテストでビューをインスタンス化するときにパラメータを渡しました。これは標準的なオプションのパラメータの1つで、それに対応するコードを変更することなくテストすることができます。 – Chris

関連する問題