gpt4 book ai didi

对于公共(public)方法,Python 模拟补丁无法按预期工作

转载 作者:太空狗 更新时间:2023-10-29 19:37:25 24 4
gpt4 key购买 nike

我正在尝试为我的 Flask 应用程序修补一个公共(public)方法,但它似乎不起作用。

这是我在 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

这是我的测试,它没有解析。

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 的文档。

本质上,您正在修补 mrss.feed_burnerget_feed() 的定义,但是您的 View 处理程序 feed() 已经有一个引用原始 mrss.feed_burner.get_feed()。要解决此问题,您需要修补 View 文件中的引用。

根据您在 View 函数中对 get_feed 的使用,我假设您正在像这样导入 get_feed

查看文件.py

from mrss.feed_burner import get_feed

如果是这样,您应该像这样修补 view_file.get_feed:

def test_feed(self):
with patch('view_file.get_feed', new=lambda: '<xml></xml>'):
...

关于对于公共(public)方法,Python 模拟补丁无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com