| import pandas as pd |
| import pytest |
| from src.components.data_cleaning import DataCleaning |
|
|
|
|
| @pytest.fixture |
| def cleaner(): |
| return DataCleaning() |
|
|
|
|
| def test_drop_duplicates_removes_duplicate_rows(cleaner): |
| df = pd.DataFrame({'a': [1,1,2], 'b': [3,3,4]}) |
| result = cleaner._drop_duplicates(df) |
| assert len(result) == 2 |
|
|
| def test_drop_duplicates_keeps_unique_rows(cleaner): |
| df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]}) |
| result = cleaner._drop_duplicates(df) |
| assert len(result) == 3 |
|
|
| def test_drop_unnecessary_columns_removes_known_cols(cleaner): |
| df = pd.DataFrame({'MachineID': [1], 'SMode': [0], 'keep_me': [99]}) |
| result = cleaner._drop_unnecessary_columns(df) |
| assert 'MachineID' not in result.columns |
| assert 'SMode' not in result.columns |
| assert 'keep_me' in result.columns |
|
|
| def test_drop_unnecessary_columns_ignores_missing_cols(cleaner): |
| df = pd.DataFrame({'keep_me': [1, 2]}) |
| result = cleaner._drop_unnecessary_columns(df) |
| assert 'keep_me' in result.columns |
|
|
| def test_handle_missing_values_drops_null_target_rows(cleaner): |
| df = pd.DataFrame({'a': [1, 2, 3], 'target': [0, None, 1]}) |
| result = cleaner._handle_missing_values(df) |
| assert len(result) == 2 |
| assert result['target'].isna().sum() == 0 |
|
|
| def test_handle_missing_values_ignores_df_without_target(cleaner): |
| df = pd.DataFrame({'a': [1, 2], 'b': [None, 4]}) |
| result = cleaner._handle_missing_values(df) |
| assert len(result) == 2 |