Python фиктивный патч не работает должным образом для публичного метода
Я пытаюсь исправить публичный метод для моего приложения фляги, но это, кажется, не работает.
Вот мой код в 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)
1 ответ
Я считаю, что ваша проблема в том, что вы не исправляете правильное пространство имен. Смотрите документацию where_to_patch для unittest.mock.patch
,
По сути, вы исправляете определение get_feed()
в mrss.feed_burner
но ваш взгляд обработчик feed()
уже есть ссылка на оригинал mrss.feed_burner.get_feed()
, Чтобы решить эту проблему, вам нужно исправить ссылку в вашем файле просмотра.
На основании вашего использования get_feed
в вашей функции просмотра, я полагаю, вы импортируете get_feed
вот так
view_file.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>'):
...