我有一个名为myviews.py
的文件,该文件位于名为views
的目录下,该目录又位于名为src
的目录下,其中包含一些看起来像这样的视图:
from utils import verify_refresh_token
fetch_views = Blueprint('foo', __name, url_prefix='bar')
@fetchviews.route('baz', methods=['GET'])
@verify_refresh_token
def process_request():
return 'test'
在utils.py
内,我有或多或少的verify_refresh_token函数:
def verify_refresh_token(func):
@wraps(func)
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
在我的测试文件中,我有类似的内容:
from src.main import app
....
def setUp(self):
with mock.patch('src.views.myviews.verify_refresh_token') as mock_verify_token:
self.test_app = app.test_client(self)
def test_stuff(self):
self.tester.post('bar/baz', data={})
无论我修补什么(将src.views.myviews.verify_refresh_token
更改为src.utils.verify_refresh_token
等),装饰者仍然会被调用并崩溃我的应用程序。处理这个装饰器的正确方法是什么?视图将添加到main.py
,如下所示:
app = Flask(__name__)
from views.myviews import fetchviews
app.register_blueprint(fetchviews)