У меня есть метод, который принимает в качестве параметра путь к папке. Внутри папки находится файл с именем wh.xlsx
.
Метод загружает файл и удаляет некоторые ненужные строки.
def remove_retail_codes(path):
directory = path + constants.STOCK_DIR+"\\wh.xlsx"
file = panda.read_excel(directory)
last_file = panda.DataFrame()
for code in constants.NOT_NEEDED:
last_file = panda.concat([last_file, file[file['col1'].str.startswith(code) &
~file['col2'].str.contains(constants.NOT_NEEDED[code])]],
ignore_index=True)
last_file.drop(labels='col3', axis=1)
return(last_file)
Я пытаюсь создать модульный тест для этого метода, но мне сложно понять, что / как мне следует сделать.
def test_remove_retail_codes_with_constants(self):
df = pandas.DataFrame({'Col1': ['c0000', 'c0000', 'c0000'],
'Col2': ['g1', 'g2', 'g3']})
output = BytesIO()
writer = pandas.ExcelWriter(output, engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
writer.save()
output.seek(0)
with patch("file_service.remove_retail_codes") as open_mock:
open_mock.return_value = output
df = file_service.remove_retail_codes('file/path/file.xslx')
open_mock.assert_called_once_with('file/path/file.xslx')
pandas.testing.assert_frame_equal(
df, pandas.DataFrame({'Col1': ['c0000'],
'Col2': ['g1']})
)
Когда я запускаю этот код, я получаю
AssertionError: DataFrame Ожидаемый тип, найденный взамен
не должен dataframe
быть тип данных вместо BytesIO?