| import os |
| import pandas as pd |
| import pytest |
| import asyncio |
| from unittest.mock import AsyncMock, patch |
|
|
| from src.components.data_validation import Data_Validator |
| from src.entity.config_entity import DataValidationConfig, DataIngestionConfig |
| from src.entity.artifact_entity import DataValidationArtifact |
|
|
|
|
| @pytest.mark.asyncio |
| async def test_data_validation_initiate_success(dummy_dataframe, data_ingestion_artifact, monkeypatch): |
| """Test that Data_Validator validates a dummy dataframe and writes a yaml report. |
| |
| The test patches ``pandas.read_csv`` used inside ``Data_Validator`` to return the |
| ``dummy_dataframe`` fixture, avoiding any file‑system I/O. |
| """ |
| |
| with patch("pandas.read_csv", return_value=dummy_dataframe) as mock_read_csv: |
| |
| data_validation_config = DataValidationConfig() |
| validator = Data_Validator(data_validation_config=data_validation_config, |
| data_ingestion_artifact=data_ingestion_artifact) |
| |
| artifact: DataValidationArtifact = await validator.initiate() |
|
|
| |
| assert isinstance(artifact, DataValidationArtifact) |
| |
| assert os.path.isfile(artifact.validation_report_file_path) |
| |
| with open(artifact.validation_report_file_path) as f: |
| yaml_content = f.read() |
| assert "status" in yaml_content |
|
|