E-Commerce-Chatbot-recommendation / src /tests /test_data_validation.py
VashuTheGreat2's picture
Upload folder using huggingface_hub
243b4bc verified
Raw
History Blame Contribute Delete
1.66 kB
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.
"""
# Patch pandas.read_csv to return the dummy dataframe
with patch("pandas.read_csv", return_value=dummy_dataframe) as mock_read_csv:
# Initialise validator with required configs and the ingestion artifact
data_validation_config = DataValidationConfig()
validator = Data_Validator(data_validation_config=data_validation_config,
data_ingestion_artifact=data_ingestion_artifact)
# Execute validation
artifact: DataValidationArtifact = await validator.initiate()
# Verify we got a proper artifact
assert isinstance(artifact, DataValidationArtifact)
# The validator writes a yaml report; ensure the file exists
assert os.path.isfile(artifact.validation_report_file_path)
# Optional sanity check: the yaml should contain a "status" key
with open(artifact.validation_report_file_path) as f:
yaml_content = f.read()
assert "status" in yaml_content