/
nevers
/
hackINTERPOL
Обзор
Документация
Войти
/
nevers
/
hackINTERPOL
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tests/test_validate.py
104 строки
3 KB
nevers
upload files
13 янв 2026, 17:14
13 янв 2026, 17:14
d476ef2
Код
Авторство
О чём код?
"""Tests for CSV validation.""" import pandas as pd from studypulse.io import validate_dataframe, validate_ranges, validate_schema def test_validate_schema_missing_columns() -> None: """Test schema validation catches missing columns.""" df = pd.DataFrame({"student_id": [1], "student_name": ["Alice"]}) is_valid, errors = validate_schema(df) assert not is_valid assert len(errors) > 0 assert "Missing required columns" in errors[0] def test_validate_schema_all_columns() -> None: """Test schema validation passes with all required columns.""" df = pd.DataFrame( { "student_id": ["STU001"], "student_name": ["Alice"], "assignment_score": [85.0], "assignments_submitted": [8], "attendance_rate": [0.9], "days_since_last_submission": [3], "days_to_deadline": [5], } ) is_valid, errors = validate_schema(df) assert is_valid assert len(errors) == 0 def test_validate_ranges_score_out_of_range() -> None: """Test range validation catches out-of-range scores.""" df = pd.DataFrame( { "student_id": ["STU001"], "student_name": ["Alice"], "assignment_score": [150.0], # Out of range "assignments_submitted": [8], "attendance_rate": [0.9], "days_since_last_submission": [3], "days_to_deadline": [5], } ) is_valid, errors = validate_ranges(df) assert not is_valid assert any("assignment_score" in err for err in errors) def test_validate_ranges_attendance_out_of_range() -> None: """Test range validation catches out-of-range attendance.""" df = pd.DataFrame( { "student_id": ["STU001"], "student_name": ["Alice"], "assignment_score": [85.0], "assignments_submitted": [8], "attendance_rate": [1.5], # Out of range "days_since_last_submission": [3], "days_to_deadline": [5], } ) is_valid, errors = validate_ranges(df) assert not is_valid assert any("attendance_rate" in err for err in errors) def test_validate_ranges_negative_submissions() -> None: """Test range validation catches negative submissions.""" df = pd.DataFrame( { "student_id": ["STU001"], "student_name": ["Alice"], "assignment_score": [85.0], "assignments_submitted": [-1], # Invalid "attendance_rate": [0.9], "days_since_last_submission": [3], "days_to_deadline": [5], } ) is_valid, errors = validate_ranges(df) assert not is_valid assert any("assignments_submitted" in err for err in errors) def test_validate_dataframe_valid() -> None: """Test full validation passes for valid data.""" df = pd.DataFrame( { "student_id": ["STU001", "STU002"], "student_name": ["Alice", "Bob"], "assignment_score": [85.0, 72.0], "assignments_submitted": [8, 7], "attendance_rate": [0.9, 0.85], "days_since_last_submission": [3, 5], "days_to_deadline": [5, 2], } ) is_valid, errors = validate_dataframe(df) assert is_valid assert len(errors) == 0