1515from openml .exceptions import PyOpenMLError
1616from openml .testing import TestBase
1717
18+ import pytest
1819
1920@pytest .mark .production ()
2021class OpenMLDatasetTest (TestBase ):
@@ -399,60 +400,7 @@ def test_get_sparse_categorical_data_id_395(self):
399400
400401
401402class OpenMLDatasetFunctionTest (TestBase ):
402- @unittest .mock .patch ("openml.datasets.dataset.pickle" )
403- @unittest .mock .patch ("openml.datasets.dataset._get_features_pickle_file" )
404- def test__read_features (self , filename_mock , pickle_mock ):
405- """Test we read the features from the xml if no cache pickle is available.
406-
407- This test also does some simple checks to verify that the features are read correctly
408- """
409- filename_mock .return_value = os .path .join (self .workdir , "features.xml.pkl" )
410- pickle_mock .load .side_effect = FileNotFoundError
411- features = openml .datasets .dataset ._read_features (
412- os .path .join (
413- self .static_cache_dir ,
414- "org" ,
415- "openml" ,
416- "test" ,
417- "datasets" ,
418- "2" ,
419- "features.xml" ,
420- ),
421- )
422- assert isinstance (features , dict )
423- assert len (features ) == 39
424- assert isinstance (features [0 ], OpenMLDataFeature )
425- assert features [0 ].name == "family"
426- assert len (features [0 ].nominal_values ) == 9
427- # pickle.load is never called because the features pickle file didn't exist
428- assert pickle_mock .load .call_count == 0
429- assert pickle_mock .dump .call_count == 1
430-
431- @unittest .mock .patch ("openml.datasets.dataset.pickle" )
432- @unittest .mock .patch ("openml.datasets.dataset._get_qualities_pickle_file" )
433- def test__read_qualities (self , filename_mock , pickle_mock ):
434- """Test we read the qualities from the xml if no cache pickle is available.
435-
436- This test also does some minor checks to ensure that the qualities are read correctly.
437- """
438- filename_mock .return_value = os .path .join (self .workdir , "qualities.xml.pkl" )
439- pickle_mock .load .side_effect = FileNotFoundError
440- qualities = openml .datasets .dataset ._read_qualities (
441- os .path .join (
442- self .static_cache_dir ,
443- "org" ,
444- "openml" ,
445- "test" ,
446- "datasets" ,
447- "2" ,
448- "qualities.xml" ,
449- ),
450- )
451- assert isinstance (qualities , dict )
452- assert len (qualities ) == 106
453- # pickle.load is never called because the qualities pickle file didn't exist
454- assert pickle_mock .load .call_count == 0
455- assert pickle_mock .dump .call_count == 1
403+
456404
457405 def test__check_qualities (self ):
458406 qualities = [{"oml:name" : "a" , "oml:value" : "0.5" }]
@@ -466,3 +414,67 @@ def test__check_qualities(self):
466414 qualities = [{"oml:name" : "a" , "oml:value" : None }]
467415 qualities = openml .datasets .dataset ._check_qualities (qualities )
468416 assert qualities ["a" ] != qualities ["a" ]
417+
418+
419+
420+ def test__read_features (mocker , workdir , static_cache_dir ):
421+ """Test we read the features from the xml if no cache pickle is available.
422+
423+ This test also does some simple checks to verify that the features are read correctly
424+ """
425+ filename_mock = mocker .patch ("openml.datasets.dataset._get_features_pickle_file" )
426+ pickle_mock = mocker .patch ("openml.datasets.dataset.pickle" )
427+
428+ filename_mock .return_value = os .path .join (workdir , "features.xml.pkl" )
429+ pickle_mock .load .side_effect = FileNotFoundError
430+
431+ features = openml .datasets .dataset ._read_features (
432+ os .path .join (
433+ static_cache_dir ,
434+ "org" ,
435+ "openml" ,
436+ "test" ,
437+ "datasets" ,
438+ "2" ,
439+ "features.xml" ,
440+ ),
441+ )
442+ assert isinstance (features , dict )
443+ assert len (features ) == 39
444+ assert isinstance (features [0 ], OpenMLDataFeature )
445+ assert features [0 ].name == "family"
446+ assert len (features [0 ].nominal_values ) == 9
447+ # pickle.load is never called because the features pickle file didn't exist
448+ assert pickle_mock .load .call_count == 0
449+ assert pickle_mock .dump .call_count == 1
450+
451+
452+ def test__read_qualities (static_cache_dir , workdir , mocker ):
453+ """Test we read the qualities from the xml if no cache pickle is available.
454+
455+ This test also does some minor checks to ensure that the qualities are read correctly.
456+ """
457+
458+ filename_mock = mocker .patch ("openml.datasets.dataset._get_qualities_pickle_file" )
459+ pickle_mock = mocker .patch ("openml.datasets.dataset.pickle" )
460+
461+ filename_mock .return_value = os .path .join (workdir , "qualities.xml.pkl" )
462+ pickle_mock .load .side_effect = FileNotFoundError
463+
464+ qualities = openml .datasets .dataset ._read_qualities (
465+ os .path .join (
466+ static_cache_dir ,
467+ "org" ,
468+ "openml" ,
469+ "test" ,
470+ "datasets" ,
471+ "2" ,
472+ "qualities.xml" ,
473+ ),
474+ )
475+ assert isinstance (qualities , dict )
476+ assert len (qualities ) == 106
477+ assert pickle_mock .load .call_count == 0
478+ assert pickle_mock .dump .call_count == 1
479+
480+
0 commit comments