我有一个名为 api 的 Python Flask 蓝图,其中有一个名为 utils 的文件,其中包含一个我试图模拟的函数。该 utils 文件的路径是app/api/utils.py
,而我试图模拟的函数是is_file_writeable()
.
我正在对位于 的蓝图中的路线进行测试app/api/configs.py
。在 中configs.py
,我按如下方式导入函数:
from app.api.utils import is_file_writeable
Run Code Online (Sandbox Code Playgroud)
我尝试了以下补丁装饰器:
@patch('app.api.configs.is_file_writeable', return_value=False)
Run Code Online (Sandbox Code Playgroud)
和
@patch('app.api.utils.is_file_writeable', return_value=False)
Run Code Online (Sandbox Code Playgroud)
两者分别返回以下错误:
AttributeError: 'Blueprint' 对象没有属性 'configs'
和
AttributeError: 'Blueprint' 对象没有属性 'utils'
关于为什么我收到导入错误的任何想法?
我有一个 Flask 蓝图,它从父 Flask 模块导入一个函数,如下所示: from app_name.utils import try_ad_connection
我正在尝试模拟/打补丁,try_ad_connection
但我不知道我的目标在补丁装饰器中应该是什么,因为蓝图不是一个模块,所以定位app_name.blueprint_name.try_ad_connection
似乎不起作用。
如果我将导入更改为整个 utils 文件并调用try_ad_connection
by app_name.utils.try_ad_connection
,我可以通过app_name.utils.try_ad_connection
用作目标来修补它,但我想避免导入整个文件以仅使用一个函数。