Team Ai
Apppublic

IDKHowToCodeFr/tinyml-backend

sourceHugging Faceupdated 13h agoView on Hugging Face
1likes
test_ensemble.py50 linesDownload Raw Back to tests
1import pytest2import numpy as np3import os4import sys5from unittest.mock import patch, MagicMock6 7sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../backend')))8from ensemble import EnsembleModel9 10@patch('joblib.load')11@patch('os.path.exists')12def test_ensemble_initialization(mock_exists, mock_load):13    mock_exists.return_value = True14    15    mock_model = MagicMock()16    mock_load.return_value = mock_model17    18    ensemble = EnsembleModel()19    20    assert len(ensemble.models) == len(ensemble.model_names)21    assert 'rf' in ensemble.models22    assert 'logreg' in ensemble.models23 24@patch('joblib.load')25@patch('os.path.exists')26def test_ensemble_prediction(mock_exists, mock_load):27    mock_exists.return_value = True28    29    mock_model = MagicMock()30    mock_model.predict_proba.return_value = np.array([[0.2, 0.8]])31    32    mock_label_encoder = MagicMock()33    mock_label_encoder.inverse_transform.side_effect = lambda x: [f"Class_{i}" for i in x]34    35    def side_effect(path):36        if 'label_encoder' in path:37            return mock_label_encoder38        return mock_model39        40    mock_load.side_effect = side_effect41    42    ensemble = EnsembleModel()43    X_dummy = np.array([[1.0, 2.0, 3.0, 4.0, 5.0, 1.0]])44    final_pred, confidence, individual_preds, class_probs, weights, individual_conf = ensemble.predict(X_dummy)45    46    assert confidence == 0.847    assert final_pred == "Class_1"48    assert "Class_0" in class_probs49    assert class_probs["Class_1"] == 0.850