Структура моей папки
main.py
class Class1
generate_columns()
column_api()
utilities.py
class Class2
get_response()
Я хочу смоделировать column_api()
функцию в class Class1
.
Сигнатура функции выглядит следующим образом:
class Class1:
def generate_columns():
calls `get_response()` from `class Class2` and returns response
def column_api(data=List[Dict]]):
resp = self.generate_columns(data)
for item in resp:
if data["name"] == item["name"]:
ret.append(item)
return ret
Я бы хотел издеваться column_api
. Вот тест, который у меня до сих пор:
def test_column_api():
testClass = Class1()
mock_response = [{"id":"1", "name":"test1"}]
load_data = [{"id":"1", "name":"test1"}, {"id":"2", "name":"test2"}]
with patch("package.main.Class1.generate_columns") as api_mock:
api_mock.return_value = mock_response
result = testClass.column_api(load_data)
assert len(result) == 1
Сбой здесь AssertionError
. Возвращенный список всегда пуст, независимо от того, сколько я пытаюсь. Но в идеале, согласно моему определению функции, возвращаемый список должен иметь один словарь, имя которого совпадает с именем в объекте ответа.
Я очень новичок в понятиях Mock
и patch
в Python. Прочитав различные посты по SO и действительные документы по Mock
, я дошел до этого места. Я думаю, что мой api_mock
не используется функцией column_api
. Я думаю, что в этом проблема, но я не уверен, как заставить column_api
распознать api_mock
. Любая помощь в этом очень ценится! Надеюсь, что мои определения функций здесь ясны, но я рад включить любую другую информацию, которую я мог пропустить.
Заранее большое спасибо. Я ломал голову над этим уже довольно давно. Надеюсь найти ответ здесь.