我在myfile.py
中有一个不接受任何参数的函数。在函数内部,我根据从API调用返回的数据创建熊猫DataFrame
,显示为: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_call_from_helper_function()
中的api调用,但是当我将其作为参数传递给pd.DataFrame
时却无法模拟它。我在做什么错了?