Coverage for mlos_core/mlos_core/tests/optimizers/bayesian_optimizers_test.py: 95%
22 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-21 01:50 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-21 01:50 +0000
1#
2# Copyright (c) Microsoft Corporation.
3# Licensed under the MIT License.
4#
5"""Tests for Bayesian Optimizers."""
8import ConfigSpace as CS
9import pandas as pd
10import pytest
12from mlos_core.optimizers import BaseOptimizer, OptimizerType
13from mlos_core.optimizers.bayesian_optimizers import BaseBayesianOptimizer
16@pytest.mark.filterwarnings("error:Not Implemented")
17@pytest.mark.parametrize(
18 ("optimizer_class", "kwargs"),
19 [
20 *[(member.value, {}) for member in OptimizerType],
21 ],
22)
23def test_context_not_implemented_warning(
24 configuration_space: CS.ConfigurationSpace,
25 optimizer_class: type[BaseOptimizer],
26 kwargs: dict | None,
27) -> None:
28 """Make sure we raise warnings for the functionality that has not been implemented
29 yet.
30 """
31 if kwargs is None:
32 kwargs = {}
33 optimizer = optimizer_class(
34 parameter_space=configuration_space,
35 optimization_targets=["score"],
36 **kwargs,
37 )
38 suggestion = optimizer.suggest()
39 scores = pd.Series({"score": [1]})
40 context = pd.Series([["something"]])
42 suggestion._context = context # pylint: disable=protected-access
43 with pytest.raises(UserWarning):
44 optimizer.register(observations=suggestion.complete(scores))
46 with pytest.raises(UserWarning):
47 optimizer.suggest(context=context)
49 if isinstance(optimizer, BaseBayesianOptimizer):
50 with pytest.raises(UserWarning):
51 optimizer.surrogate_predict(suggestion=suggestion)