Coverage for mlos_core/mlos_core/tests/optimizers/bayesian_optimizers_test.py: 95%
21 statements
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-06 00:35 +0000
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-06 00:35 +0000
1#
2# Copyright (c) Microsoft Corporation.
3# Licensed under the MIT License.
4#
5"""
6Tests for Bayesian Optimizers.
7"""
9from typing import Optional, Type
11import pytest
13import pandas as pd
14import ConfigSpace as CS
16from mlos_core.optimizers import BaseOptimizer, OptimizerType
17from mlos_core.optimizers.bayesian_optimizers import BaseBayesianOptimizer
20@pytest.mark.parametrize(('optimizer_class', 'kwargs'), [
21 *[(member.value, {}) for member in OptimizerType],
22])
23def test_context_not_implemented_error(configuration_space: CS.ConfigurationSpace,
24 optimizer_class: Type[BaseOptimizer], kwargs: Optional[dict]) -> None:
25 """
26 Make sure we raise exceptions for the functionality that has not been implemented yet.
27 """
28 if kwargs is None:
29 kwargs = {}
30 optimizer = optimizer_class(parameter_space=configuration_space, **kwargs)
31 suggestion = optimizer.suggest()
32 scores = pd.DataFrame({'score': [1]})
33 # test context not implemented errors
34 with pytest.raises(NotImplementedError):
35 optimizer.register(suggestion, scores['score'], context=pd.DataFrame([["something"]]))
37 with pytest.raises(NotImplementedError):
38 optimizer.suggest(context=pd.DataFrame([["something"]]))
40 if isinstance(optimizer, BaseBayesianOptimizer):
41 with pytest.raises(NotImplementedError):
42 optimizer.surrogate_predict(suggestion, context=pd.DataFrame([["something"]]))