Python mock patch doesn#39;t work as expected for public method(对于公共方法,Python 模拟补丁无法按预期工作)
问题描述
我正在尝试为我的烧瓶应用程序修补公共方法,但它似乎不起作用.
I'm trying to patch a public method for my flask application but it doesn't seem to work.
这是我在 mrss.feed_burner
def get_feed(env=os.environ):
return 'something'
这就是我使用它的方式
@app.route("/feed")
def feed():
mrss_feed = get_feed(env=os.environ)
response = make_response(mrss_feed)
response.headers["Content-Type"] = "application/xml"
return response
这是我没有解析的测试.
And this is my test which it's not parsing.
def test_feed(self):
with patch('mrss.feed_burner.get_feed', new=lambda: '<xml></xml>'):
response = self.app.get('/feed')
self.assertEquals('<xml></xml>', response.data)
推荐答案
我相信您的问题是您没有在正确的命名空间中进行修补.请参阅 where_to_patch 文档了解 unittest.mock.patch
.
I believe your problem is that you're not patching in the right namespace. See where_to_patch documentation for unittest.mock.patch
.
本质上,您正在修补 mrss.feed_burner
中 get_feed()
的定义,但您的视图处理程序 feed()
已经有一个参考原始 mrss.feed_burner.get_feed()
.要解决此问题,您需要修补视图文件中的引用.
Essentially, you're patching the definition of get_feed()
in mrss.feed_burner
but your view handler feed()
already has a reference to the original mrss.feed_burner.get_feed()
. To solve this problem, you need to patch the reference in your view file.
根据您在视图函数中对 get_feed
的使用,我假设您正在像这样导入 get_feed
Based on your usage of get_feed
in your view function, I assume you're importing get_feed
like so
view_file.py
view_file.py
from mrss.feed_burner import get_feed
如果是这样,您应该像这样修补 view_file.get_feed
:
If so, you should be patching view_file.get_feed
like so:
def test_feed(self):
with patch('view_file.get_feed', new=lambda: '<xml></xml>'):
...
这篇关于对于公共方法,Python 模拟补丁无法按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:对于公共方法,Python 模拟补丁无法按预期工作


基础教程推荐
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 筛选NumPy数组 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01