Python макет параметра функции - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть функция в 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.Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...