模拟一个自定义的装饰器,其中有一个函数

问题描述 投票:0回答:1

我正在尝试对一个 Flask 应用程序路径进行单元测试,该路径调用一个由名为“verify_jwt”的自定义装饰器包装的函数。该装饰器与路由调用的函数在同一模块中定义。 verify_jwt 装饰器用作保护需要身份验证的路由的装饰器。它验证请求中的 JWT(使用来自flask_jwt_extended 的 verify_jwt_in_request),并在验证成功时调用修饰函数。如果验证失败,它会记录异常并返回未经授权的响应。

我尝试了在 Stack Overflow 和不同网站上找到的不同方法,例如在导入带有被测函数的模块之前修补装饰器,模拟装饰器内部的 verify_jwt_in_request 函数等。

python-unittest patch python-decorators
1个回答
0
投票

我没有尝试模拟装饰器 (verify_jwt),而是模拟了其中的函数 (verify_jwt_in_request) - 我也从 Stack Overflow 中得到了这个想法。对于要执行的装饰函数,verify_jwt_in_request 必须不返回任何内容或在验证失败时返回异常。这是我的做法:

> def mock_verify_jwt_in_request():
>     return 
> 
> with patch('flask_jwt_extended.verify_jwt_in_request',
> mock_verify_jwt_in_request):
>     from your_module import your_function

如果装饰器和被测函数位于同一模块中,此方法也适用。

© www.soinside.com 2019 - 2024. All rights reserved.