56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
"""
|
|
©AngelaMos | 2026
|
|
test_config_ml.py
|
|
|
|
Tests ML-related settings defaults for detection mode,
|
|
ensemble weights, model paths, and MLflow tracking URI
|
|
|
|
Validates that the default detection_mode is 'rules',
|
|
ensemble weights (AE + RF + IF) sum to exactly 1.0,
|
|
model_dir defaults to 'data/models', ae_threshold_
|
|
percentile defaults to 99.5, and mlflow_tracking_uri
|
|
defaults to 'file:./mlruns'
|
|
|
|
Connects to:
|
|
app/config - Settings pydantic-settings model
|
|
"""
|
|
|
|
from app.config import settings
|
|
|
|
|
|
def test_default_detection_mode_is_rules() -> None:
|
|
"""
|
|
Default detection_mode is 'rules' before any ML models are loaded.
|
|
"""
|
|
assert settings.detection_mode == "rules"
|
|
|
|
|
|
def test_default_ensemble_weights_sum_to_one() -> None:
|
|
"""
|
|
AE + RF + IF ensemble weights sum to exactly 1.0.
|
|
"""
|
|
total = (settings.ensemble_weight_ae + settings.ensemble_weight_rf +
|
|
settings.ensemble_weight_if)
|
|
assert abs(total - 1.0) < 1e-6
|
|
|
|
|
|
def test_default_model_dir() -> None:
|
|
"""
|
|
Default model artifact directory is data/models.
|
|
"""
|
|
assert settings.model_dir == "data/models"
|
|
|
|
|
|
def test_default_ae_threshold_percentile() -> None:
|
|
"""
|
|
Default autoencoder threshold percentile is 99.5.
|
|
"""
|
|
assert settings.ae_threshold_percentile == 99.5
|
|
|
|
|
|
def test_default_mlflow_tracking_uri() -> None:
|
|
"""
|
|
Default MLflow tracking URI uses local file storage.
|
|
"""
|
|
assert settings.mlflow_tracking_uri == "file:./mlruns"
|