112 lines
3.1 KiB
Python
112 lines
3.1 KiB
Python
"""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
|
|
)
|