У меня есть функция в myfile.py
, которая не принимает аргументов.Внутри функции я создаю панд DataFrame
на основе данных, возвращаемых из вызова API, показанного как: df = pd.DataFrame(api_call_from_helper_function().all_the_data())
.Я пытаюсь смоделировать вызов API, чтобы он не пытался подключиться к API.Ниже моя попытка:
myfile.py
def make_dataframe_from_data():
df = pd.DataFrame(api_call_from_helper_function().all_the_data())
return df
test_myfile.py
import pandas as pd
from unittest.mock import MagicMock
import myfile
from myfile import make_dataframe_from_data
def test_make_dataframe_from_data(monkeypatch):
mock_df = MagicMock()
mock_instance = MagicMock(return_value=mock_df)
monkeypatch.setattr("pd.DataFrame", mock_instance)
result = make_dataframe_from_data()
mock_instance.assert_called_once()
assert isinstance(result, pd.DataFrame())
В этом кодеapi_call_from_helper_function()
использует другую функцию, которую я сделал для вызова API, а добавленный .all_the_data()
возвращает все полученные данные.Прямо сейчас мои тесты могут макетировать вызов API в api_call_from_helper_function()
, но я не могу заставить его симулировать, когда передаю его в качестве параметра pd.DataFrame
.Что я делаю не так?