У меня есть сценарий Python, который объединяет отчеты, используя Pandas в последовательности операций DataFrame (drop, groupby, sum, et c). Допустим, я начинаю с простой функции, которая очищает все столбцы, у которых нет значений, в качестве входных и выходных данных используется DataFrame:
# cei.py
def clean_table_cols(source_df: pd.DataFrame) -> pd.DataFrame:
# IMPLEMENTATION
# eg. return source_df.dropna(axis="columns", how="all")
В своих тестах я хотел убедиться, что эта функция фактически удаляет все столбцы, которые все значения пусты. Поэтому я организовал тестовый ввод и вывод и проверил с помощью функции assert_frame_equal
из pandas .testing:
# test_cei.py
import pandas as pd
def test_clean_table_cols() -> None:
df = pd.DataFrame(
{
"full_valued": [1, 2, 3],
"all_missing1": [None, None, None],
"some_missing": [None, 2, 3],
"all_missing2": [None, None, None],
}
)
expected = pd.DataFrame({"full_valued": [1, 2, 3], "some_missing": [None, 2, 3]})
result = cei.clean_table_cols(df)
pd.testing.assert_frame_equal(result, expected)
Мой вопрос: концептуально ли это модульный тест или e2e / интеграционный тест, поскольку Я не высмеиваю pandas реализацию. Но если я буду издеваться над DataFrame, я не буду тестировать функциональность кода. Каков рекомендуемый способ проверки следующих TDD рекомендаций?
Примечание: использование Pandas в этом проекте является проектным решением, поэтому нет намерения абстрагировать Pandas интерфейсы для замены это с другой библиотекой в будущем.