私はFlaskアプリケーションを作成しており、テストを書く過程にあります。私のfoo/__init__.py
では、私は、configファイルをお読みください。グローバル設定ファイルでアプリケーションをテストするにはどうすればよいですか?
from flask import Flask
app = Flask(__name__)
from .conf import read_config
settings = read_config()
、私はテストが非常に困難に私のアプリケーション全体でグローバルオブジェクトとしてfoo.settings
を使用しています。例えば
:settings
オブジェクトがコードは本質的にステートフル作り、foo
からインポートされるため、上記経路において
import json
from foo import settings
from .helper import get_hosts_status
@app.route("/hosts/status")
def hosts_status():
assert 'is_production' in settings
data = {
"num_hosts_up" : get_hosts_status(settings['is_production'])
}
return json.dumps(data)
は、コードをテストすることは非常に困難です。 settings
は関数のパラメータではないので、単にオブジェクトをモックすることはできません。
私はアプリケーションをリファクタリングしようとしていますが、このようなグローバルスコープのオブジェクトを使用することは避けられません。私のsettings
オブジェクトのようなグローバルオブジェクトに依存する関数をテストするための受け入れられた方法がありますか、これをリファクタリングしてテストするのが簡単な方法はありますか?
['unittest.mock.patch.dict'](https://docs.python.org/3/library/unittest.mock.html#unittest.mock .patch.dict)それです。その後、特定のキーまたはすべてを置き換えることができます。 – jonrsharpe
@jonrsharpeそれは有望そうです - 私はそれを見てみましょう。リソースへの感謝! – erip