"""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 )