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

1# 

2# Copyright (c) Microsoft Corporation. 

3# Licensed under the MIT License. 

4# 

5"""Tests for Bayesian Optimizers.""" 

6 

7 

8import ConfigSpace as CS 

9import pandas as pd 

10import pytest 

11 

12from mlos_core.optimizers import BaseOptimizer, OptimizerType 

13from mlos_core.optimizers.bayesian_optimizers import BaseBayesianOptimizer 

14 

15 

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"]]) 

41 

42 suggestion._context = context # pylint: disable=protected-access 

43 with pytest.raises(UserWarning): 

44 optimizer.register(observations=suggestion.complete(scores)) 

45 

46 with pytest.raises(UserWarning): 

47 optimizer.suggest(context=context) 

48 

49 if isinstance(optimizer, BaseBayesianOptimizer): 

50 with pytest.raises(UserWarning): 

51 optimizer.surrogate_predict(suggestion=suggestion)