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

1# 

2# Copyright (c) Microsoft Corporation. 

3# Licensed under the MIT License. 

4# 

5""" 

6Tests for Bayesian Optimizers. 

7""" 

8 

9from typing import Optional, Type 

10 

11import pytest 

12 

13import pandas as pd 

14import ConfigSpace as CS 

15 

16from mlos_core.optimizers import BaseOptimizer, OptimizerType 

17from mlos_core.optimizers.bayesian_optimizers import BaseBayesianOptimizer 

18 

19 

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

36 

37 with pytest.raises(NotImplementedError): 

38 optimizer.suggest(context=pd.DataFrame([["something"]])) 

39 

40 if isinstance(optimizer, BaseBayesianOptimizer): 

41 with pytest.raises(NotImplementedError): 

42 optimizer.surrogate_predict(suggestion, context=pd.DataFrame([["something"]]))