【发布时间】:2016-02-25 01:25:33
【问题描述】:
我有一个名为 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
我尝试了以下补丁装饰器:
@patch('app.api.configs.is_file_writeable', return_value=False)
和
@patch('app.api.utils.is_file_writeable', return_value=False)
两者分别返回以下错误:
AttributeError: 'Blueprint' 对象没有属性 'configs'
和
AttributeError: 'Blueprint' 对象没有属性 'utils'
关于为什么我收到导入错误的任何想法?
【问题讨论】:
-
您需要的只是
@patch('app.api.configs.is_file_writeable', return_value=False),但从您的日志中可以看出app.api是Blueprint对象而不是python 模块。不幸的是我不使用烧瓶,我无法帮助你。你可以把print(app.api)之类的东西放在你的测试模块的顶部,看看它是否是一个模块。 -
提供完整的堆栈跟踪怎么样?
标签: python unit-testing flask mocking patch