Python模拟补丁不';无法按照公共方法的预期工作

Python模拟补丁不';无法按照公共方法的预期工作,python,unit-testing,flask,mocking,magicmock,Python,Unit Testing,Flask,Mocking,Magicmock,我正在尝试为我的flask应用程序修补一个公共方法,但它似乎不起作用 这是我在mrss.feed\u燃烧器中的代码 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)

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

这是我在
mrss.feed\u燃烧器中的代码

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)
def测试_馈送(自):
使用补丁('mrss.feed\u burner.get\u feed',new=lambda:''):
response=self.app.get(“/feed”)
self.assertEquals(“”,response.data)

我认为您的问题在于没有在正确的命名空间中进行修补。请参阅
unittest.mock.patch
的文档

本质上,您正在修补
mrss.feed\u burner
中的
get\u feed()
定义,但是您的视图处理程序
feed()
已经引用了原始的
mrss.feed\u burner.get\u feed()
。要解决此问题,需要修补视图文件中的引用

根据您在视图函数中使用的
get\u feed
,我假设您正在导入
get\u feed
类似的内容

view_file.py

from mrss.feed_burner import get_feed
如果是这样,您应该像这样修补
查看\u文件。获取\u提要

def test_feed(self):
    with patch('view_file.get_feed', new=lambda: '<xml></xml>'):
        ...
def测试_馈送(自):
使用修补程序('view\u file.get\u feed',new=lambda:''):
...