Flaskのルート経由で呼び出されるコードのテストケースを記述しています。私はテストアプリケーションを設定し、ルートに当たるURLを呼び出すことによってコードをテストしたくないので、関数を直接呼び出す必要があります。この作業をするにはflask.requestを偽装する必要があり、管理できないようです。 Google/stackoverflow検索では、やりたいことではないテストアプリケーションの設定方法を示す多くの回答が得られます。PythonのNosetestsの模擬フラスコ.request
コードにはこれをリストするものがあります。
somefile.py
-----------
from flask import request
def method_called_from_route():
data = request.values
# do something with data here
test_somefile.py
----------------
import unittest
import somefile
class SomefileTestCase(unittest.TestCase):
@patch('somefile.request')
def test_method_called_from_route(self, mock_request):
# want to mock the request.values here
私には2つの問題があります。
(1)私が上にスケッチしたようにリクエストにパッチを当てても機能しません。 "AttributeError: 'Blueprint'オブジェクトに 'somefile'属性がないというエラーが表示されます。
(2)リクエストオブジェクトを正確に模倣する方法がわかりません。関数ではないので、実際にはreturn_valueはありません。
もう一度これを行う方法に関する例は見つかりませんので、新しい質問が受け入れられると感じました。