Я пишу модульные тесты с Python для проекта и недавно столкнулся с проблемой декоратора @patch. У меня есть следующий метод, который мне нужно проверить
def _read_from_disk(self, excel_kwargs):
"""
Read excel file from disk and apply excel_kwargs.
Args:
excel_kwargs: Parameters for pandas.read_excel.
Returns:
DataFrame or dict of DataFrames.
"""
return pd.read_excel(self.location, **excel_kwargs)
Моя структура тестового метода
@patch("program.data.excel.BaseExcelReader._read_from_disk.pd.read_excel")
def test___read_from_disk(self, mock_df):
mock_df.return_value = pd.DataFrame({"test_id": [1, 2, 3, 4, 5]})
return_df = self.test_reader._read_from_disk(self.excel_kwargs_svd)
pd.testing.assert_frame_equal(return_df, pd.DataFrame({"test_id": [1, 2, 3, 4, 5]}))
, что дает мне следующую ошибку:
ModuleNotFoundError: No module с именем 'program.data.excel.BaseExcelReader'; 'program.data.excel' не является пакетом
Обратите внимание, что метод тестирования является только примером. Цель вопроса - найти способ издеваться над pandas .read_excel с помощью @patch. Спасибо