Flask アプリケーションのパブリック メソッドにパッチを適用しようとしていますが、うまくいかないようです。
私のコードはmrss.feed_burner
def get_feed(env=os.environ):
return 'something'
これが私の使い方です
@app.route("/feed")
def feed():
mrss_feed = get_feed(env=os.environ)
response = make_response(mrss_feed)
response.headers["Content-Type"] = "application/xml"
return response
これは解析されていない私のテストです。
def test_feed(self):
with patch('mrss.feed_burner.get_feed', new=lambda: '<xml></xml>'):
response = self.app.get('/feed')
self.assertEquals('<xml></xml>', response.data)
ベストアンサー1
問題は、正しい名前空間にパッチを適用していないことだと思います。パッチを当てる場所のドキュメントunittest.mock.patch
。
本質的には、 の定義にパッチを適用していますget_feed()
がmrss.feed_burner
、ビュー ハンドラーfeed()
にはすでに元の への参照がありますmrss.feed_burner.get_feed()
。この問題を解決するには、ビュー ファイル内の参照にパッチを適用する必要があります。
get_feed
ビュー関数での使用に基づいて、get_feed
次のようにインポートしていると想定します。
ビューファイル.py
from mrss.feed_burner import get_feed
もしそうなら、次のようにパッチを適用する必要がありますview_file.get_feed
:
def test_feed(self):
with patch('view_file.get_feed', new=lambda: '<xml></xml>'):
...