Не проходит тестирование pytest
файл load_df.py:
df = pd.read_csv("file.csv", sep="\t", encoding="cp1251", skiprows=[0])
файл load_df.py:
import pandas as pd
from load_df import df
@pytest.mark.parametrize("input_file, expected_file", [("file.csv", "test.csv")])
def test_load_data(input_file, expected_file):
actual = df
expected = pd.read_csv(expected_file, sep="\t", encoding="cp1251") #- так не проходит тест из-за разных типов данных в df
actual_subset = actual.head(3)
print("Actual DataFrame:")
print(actual_subset)
print("Expected DataFrame:")
print(expected)
assert actual_subset.equals(expected)
В файле test.csv содержатся первые три строчки исходного файла (искусственно созданный мок файл).
Аутпут:
> assert actual_subset.equals(expected)
E assert False
E + where False = <bound method NDFrame.equals of AnketID ... Причина удаления\n0 3582478 ... Тестовая\n1 3589047 ... Тестовая\n2 3589048 ... NaN\n\n[3 rows x 204 columns]>( AnketID ... Причина удаления\n0 3582478 ... Тестовая\n1 3589047 ... Тестовая\n2 3589048 ... NaN\n\n[3 rows x 204 columns])
E + where <bound method NDFrame.equals of AnketID ... Причина удаления\n0 3582478 ... Тестовая\n1 3589047 ... Тестовая\n2 3589048 ... NaN\n\n[3 rows x 204 columns]> = AnketID ... Причина удаления\n0 3582478 ... Тестовая\n1 3589047 ... Тестовая\n2 3589048 ... NaN\n\n[3 rows x 204 columns].equals
test_load_df.py:19: AssertionError
------------------------------------------------------ Captured stdout call ------------------------------------------------------
Actual DataFrame:
AnketID ... Причина удаления
0 3582478 ... Тестовая
1 3589047 ... Тестовая
2 3589048 ... NaN
[3 rows x 204 columns]
Expected DataFrame:
AnketID ... Причина удаления
0 3582478 ... Тестовая
1 3589047 ... Тестовая
2 3589048 ... NaN
[3 rows x 204 columns]
==================================================== short test summary info =====================================================
FAILED test_load_df.py::test_load_data[input_file0-test.csv] - assert False
======================================================= 1 failed in 1.29s ========================================================
Для проверки пробовала в первом файле создать three_rows = df.head(3), во втором сравнить это как expected = three_rows, тогда тест проходит.
ПРоблема в том, что при загрузке файл "test.csv" меняет некоторые типы данных с object на float64 и bool. Как этого избежать?