16

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

这是我的代码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)
4

1 回答 1

35

我相信您的问题是您没有在正确的名称空间中进行修补。请参阅where_to_patch文档以获取unittest.mock.patch.

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

根据您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>'):
        ...
于 2015-06-23T00:41:48.357 回答