2
現在のアプリケーションの設定に依存する呼び出しコードに依存する単体テストを処理する最善の方法は何ですか?私の上にテストを実行ユニットテスト中のFlask app.config
例えば
code.py
from flask import current_app
def some_method():
app = current_app._get_current_object()
value = (app.config['APP_STATIC_VAR'])*10
return value
test_code.py
class TestCode(unittest.TestCase):
def test_some_method(self):
app = create_app('app.settings.TestConfig')
value = some_method()
self.assertEqual(10, value)
は '例外RuntimeError:アプリケーションのコンテキストの外で働く' 取得時にアプリのエラーを= create_app( 'app.settings.TestConfig')行が実行されます。
テスト中にapp = create_appを呼び出すと、このトリックは実行されません。この場合、アプリケーションでconfigを読み込む必要がある場合、単体テストにはどのような方法が最適ですか?
。したがって、ユニットテストを可能にするためにコードをリファクタリングするか(例えば、コンフィグを渡す)か、あるいは統合テストのためのメソッドを適用する必要があります。それが標準的な答えです。 [しかし、私も 'unitest'を伸ばす傾向があります(http://stackoverflow.com/questions/36068957/mocking-where-its-defined-in-python-mock)と私は誰かがクールなアイデア。たぶん、 '' flask.current_app'かそこらをmock.patch'ing ... – flaschbier
私が尋ねる質問はあなたが別の設定値をテストするために探している正確に何ですか?あなたのアプリはどのように振る舞いますか?また、さまざまなアプリケーションの設定で、Flaskの[テストクライアント](http://flask.pocoo.org/docs/0.10/testing/#the-testing-skeleton)を利用できますか? – idjaw