Complete AI Data Analysis Agent implementation with 95.7% test coverage
This commit is contained in:
111
tests/conftest.py
Normal file
111
tests/conftest.py
Normal file
@@ -0,0 +1,111 @@
|
||||
"""Pytest configuration and fixtures."""
|
||||
|
||||
import pytest
|
||||
from hypothesis import settings, Verbosity
|
||||
|
||||
# Configure hypothesis settings
|
||||
settings.register_profile("default", max_examples=100, verbosity=Verbosity.normal)
|
||||
settings.register_profile("ci", max_examples=1000, verbosity=Verbosity.verbose)
|
||||
settings.load_profile("default")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_column_info():
|
||||
"""Fixture providing a sample ColumnInfo instance."""
|
||||
from src.models import ColumnInfo
|
||||
return ColumnInfo(
|
||||
name='test_column',
|
||||
dtype='numeric',
|
||||
missing_rate=0.1,
|
||||
unique_count=50,
|
||||
sample_values=[1, 2, 3, 4, 5],
|
||||
statistics={'mean': 3.0, 'std': 1.5}
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_data_profile():
|
||||
"""Fixture providing a sample DataProfile instance."""
|
||||
from src.models import DataProfile, ColumnInfo
|
||||
|
||||
columns = [
|
||||
ColumnInfo(name='id', dtype='numeric', missing_rate=0.0, unique_count=100),
|
||||
ColumnInfo(name='status', dtype='categorical', missing_rate=0.0, unique_count=3),
|
||||
]
|
||||
|
||||
return DataProfile(
|
||||
file_path='test.csv',
|
||||
row_count=100,
|
||||
column_count=2,
|
||||
columns=columns,
|
||||
inferred_type='ticket',
|
||||
key_fields={'status': 'ticket status'},
|
||||
quality_score=85.0,
|
||||
summary='Test data profile'
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_analysis_objective():
|
||||
"""Fixture providing a sample AnalysisObjective instance."""
|
||||
from src.models import AnalysisObjective
|
||||
return AnalysisObjective(
|
||||
name='Test Objective',
|
||||
description='Test analysis objective',
|
||||
metrics=['metric1', 'metric2'],
|
||||
priority=5
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_requirement_spec(sample_analysis_objective):
|
||||
"""Fixture providing a sample RequirementSpec instance."""
|
||||
from src.models import RequirementSpec
|
||||
return RequirementSpec(
|
||||
user_input='Test requirement',
|
||||
objectives=[sample_analysis_objective],
|
||||
constraints=['no_pii'],
|
||||
expected_outputs=['report']
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_analysis_task():
|
||||
"""Fixture providing a sample AnalysisTask instance."""
|
||||
from src.models import AnalysisTask
|
||||
return AnalysisTask(
|
||||
id='task_1',
|
||||
name='Test Task',
|
||||
description='Test analysis task',
|
||||
priority=5,
|
||||
dependencies=[],
|
||||
required_tools=['tool1'],
|
||||
expected_output='Test output'
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_analysis_plan(sample_analysis_objective, sample_analysis_task):
|
||||
"""Fixture providing a sample AnalysisPlan instance."""
|
||||
from src.models import AnalysisPlan
|
||||
return AnalysisPlan(
|
||||
objectives=[sample_analysis_objective],
|
||||
tasks=[sample_analysis_task],
|
||||
tool_config={'tool1': 'config1'},
|
||||
estimated_duration=300
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_analysis_result():
|
||||
"""Fixture providing a sample AnalysisResult instance."""
|
||||
from src.models import AnalysisResult
|
||||
return AnalysisResult(
|
||||
task_id='task_1',
|
||||
task_name='Test Task',
|
||||
success=True,
|
||||
data={'count': 100},
|
||||
visualizations=['chart.png'],
|
||||
insights=['Key finding'],
|
||||
execution_time=5.0
|
||||
)
|
||||
Reference in New Issue
Block a user