如何模拟Flask中的函数装饰器?

时间:2016-02-12 22:39:55

标签: python unit-testing flask python-decorators python-mock

我有一个名为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)

0 个答案:

没有答案