У меня есть ресурс API REST API, например, Resource
, который импортирует и использует функцию get_token
от libs.utils
в своем методе obj_get
.Исправлена неправильная замена исправления
Так, чтобы проверить этот ресурс, в моем тестовом классе я создал тест, как то, что следует:
mock_get_token = Mock(return_value="something")
@patch("path.to.resource.get_token", mock_get_token)
def test_get_token(self):
params = {"args": "args"}
# following call should call the get_token function in the resource
response = self.client.get("path/to/resource", params)
# do things with the response and make sure I get right output
Так что, когда я запускаю тест сам по себе, то @patch работает правильно, и, как и ожидалось, замена с функцией макета. Тем не менее, запуск теста в нашем расширенном наборе тестов для приложения приводит к сбою патча.
Выполнение таких действий, как ручная попытка заменить функцию с посмеянной функцией, также имеет неудачный патч. Мне интересно, что еще может вызвать проблему, и мне очень любопытно, что патч работает правильно, когда тест выполняется сам по себе или с меньшим подмножеством нашего набора тестов.