如何修复装饰器模拟

时间:2019-09-05 08:22:51

标签: python mocking pytest decorator

我在烧瓶应用程序中模拟装饰器时遇到问题。 我已经尝试过monkeypatch,mock.patch,但都无法正常工作

我正在使用python3.7

这是我的代码 在=> app / v1 / views / user_data.py



@r.route('/myroute/<int:user_id>', methods=['GET'])
@verify_token
def ep_intern_midas_user_data_user_id(user_id):
    # do some stuff here
    return "Done"

在app / v1 / decorators / verify_token.py


def verify_token(view_function):
    @wraps(view_function)
    def decorated_function(*args, **kwargs):
        # do decorator stuff

   return decorated_function

在tests / unit_tests / views / user_data.py

from functools import wraps
from app.v1 import decorators

def mock_decorator():
    def decorator(f):
        @wraps(f)
        def decorated_function(*args, **kwargs):
            return 200
        return decorated_function
    return decorator
# !important thing - import of app after replace
decorators.verify_token = mock_decorator

from app import app
app.testing = True

def test_index():
    with app.test_client() as client:
        res = client.get('v1/intern/midas/user_data/1')
        assert res.status_code == 200



(even with monkeypatch) 
===== never works



我希望结果为200,但我却为401,如果调用装饰器而不是模拟器,结果是什么。

感谢帮助

0 个答案:

没有答案