From 9b2aac9e5c8749243c73f2377519d2f2c407b095 Mon Sep 17 00:00:00 2001 From: Konstantin Podshumok <kpp.live@gmail.com> Date: Fri, 7 Oct 2016 19:46:52 +0300 Subject: [PATCH] [MRG + 1] [TST] (half-cosmetic) use less nose.tools import to simplify future transition to py.test (#7384) * use less nose.tools import to simplify future transition to activly developing test suites/runners * assert_equal -> assert_array_equal in test_feature_hasher_pairs_with_string_values and one missed ImportError that should be replaced with AttributeError * test for py2.6 compat with except AttributeError * fix importing of SkipTest * force using nose in python2.6 for now * there was no assert_dict_equal in py2.6. but we can use assert_equal although failed test will look a little bit ugly * remove nose imports from doc/datasets --- doc/datasets/labeled_faces_fixture.py | 2 +- doc/datasets/twenty_newsgroups_fixture.py | 3 +- sklearn/cross_decomposition/tests/test_pls.py | 3 +- sklearn/datasets/mldata.py | 2 +- sklearn/datasets/tests/test_base.py | 8 +-- sklearn/decomposition/tests/test_fastica.py | 3 +- sklearn/ensemble/tests/test_base.py | 3 +- .../test_gradient_boosting_loss_functions.py | 3 +- .../tests/test_feature_hasher.py | 7 ++- .../feature_extraction/tests/test_image.py | 3 +- sklearn/feature_extraction/tests/test_text.py | 12 ++--- sklearn/feature_selection/tests/test_base.py | 2 +- .../tests/test_from_model.py | 4 +- sklearn/feature_selection/tests/test_rfe.py | 3 +- .../tests/test_gaussian_process.py | 5 +- .../linear_model/tests/test_least_angle.py | 3 +- sklearn/linear_model/tests/test_theil_sen.py | 5 +- sklearn/manifold/tests/test_locally_linear.py | 4 +- sklearn/manifold/tests/test_mds.py | 2 +- .../manifold/tests/test_spectral_embedding.py | 8 +-- .../metrics/cluster/tests/test_supervised.py | 10 ++-- sklearn/mixture/tests/test_gmm.py | 6 +-- sklearn/neighbors/tests/test_dist_metrics.py | 2 +- .../tests/test_function_transformer.py | 30 +++++------ .../tests/test_label_propagation.py | 4 +- sklearn/svm/tests/test_bounds.py | 11 ++-- sklearn/svm/tests/test_sparse.py | 5 +- sklearn/svm/tests/test_svm.py | 4 +- sklearn/tests/test_discriminant_analysis.py | 2 +- sklearn/tree/tests/test_export.py | 5 +- .../utils/sparsetools/tests/test_traversal.py | 4 +- sklearn/utils/testing.py | 54 ++++++++++--------- sklearn/utils/tests/test_bench.py | 2 +- sklearn/utils/tests/test_fast_dict.py | 3 +- sklearn/utils/tests/test_fixes.py | 5 +- sklearn/utils/tests/test_metaestimators.py | 2 +- sklearn/utils/tests/test_murmurhash.py | 2 +- sklearn/utils/tests/test_seq_dataset.py | 4 +- sklearn/utils/tests/test_testing.py | 3 +- sklearn/utils/tests/test_validation.py | 4 +- 40 files changed, 115 insertions(+), 132 deletions(-) diff --git a/doc/datasets/labeled_faces_fixture.py b/doc/datasets/labeled_faces_fixture.py index 0d13c8ddd8..45d9d4dfc6 100644 --- a/doc/datasets/labeled_faces_fixture.py +++ b/doc/datasets/labeled_faces_fixture.py @@ -5,8 +5,8 @@ and cached in the past. """ from os.path import exists from os.path import join -from nose import SkipTest from sklearn.datasets import get_data_home +from sklearn.utils.testing import SkipTest def setup_module(module): diff --git a/doc/datasets/twenty_newsgroups_fixture.py b/doc/datasets/twenty_newsgroups_fixture.py index 0c84b53067..09e95d621d 100644 --- a/doc/datasets/twenty_newsgroups_fixture.py +++ b/doc/datasets/twenty_newsgroups_fixture.py @@ -5,8 +5,9 @@ and cached in the past. """ from os.path import exists from os.path import join -from nose import SkipTest + from sklearn.datasets import get_data_home +from sklearn.utils.testing import SkipTest def setup_module(module): diff --git a/sklearn/cross_decomposition/tests/test_pls.py b/sklearn/cross_decomposition/tests/test_pls.py index 0a27c9cd98..c476b27247 100644 --- a/sklearn/cross_decomposition/tests/test_pls.py +++ b/sklearn/cross_decomposition/tests/test_pls.py @@ -1,10 +1,9 @@ import numpy as np -from sklearn.utils.testing import (assert_array_almost_equal, +from sklearn.utils.testing import (assert_equal, assert_array_almost_equal, assert_array_equal, assert_true, assert_raise_message) from sklearn.datasets import load_linnerud from sklearn.cross_decomposition import pls_, CCA -from nose.tools import assert_equal def test_pls(): diff --git a/sklearn/datasets/mldata.py b/sklearn/datasets/mldata.py index c15e12cc7d..82ae9858e9 100644 --- a/sklearn/datasets/mldata.py +++ b/sklearn/datasets/mldata.py @@ -215,7 +215,7 @@ def fetch_mldata(dataname, target_name='label', data_name='data', return Bunch(**dataset) -# The following is used by nosetests to setup the docstring tests fixture +# The following is used by test runners to setup the docstring tests fixture def setup_module(module): # setup mock urllib2 module to avoid downloading from mldata.org diff --git a/sklearn/datasets/tests/test_base.py b/sklearn/datasets/tests/test_base.py index 39a9b2ad89..92fe96fa10 100644 --- a/sklearn/datasets/tests/test_base.py +++ b/sklearn/datasets/tests/test_base.py @@ -2,7 +2,6 @@ import os import shutil import tempfile import warnings -import nose import numpy from pickle import loads from pickle import dumps @@ -27,6 +26,7 @@ from sklearn.utils.testing import assert_true from sklearn.utils.testing import assert_equal from sklearn.utils.testing import assert_raises from sklearn.utils.testing import assert_array_equal +from sklearn.utils.testing import with_setup DATA_HOME = tempfile.mkdtemp(prefix="scikit_learn_data_home_test_") @@ -84,7 +84,7 @@ def test_default_empty_load_files(): assert_equal(res.DESCR, None) -@nose.tools.with_setup(setup_load_files, teardown_load_files) +@with_setup(setup_load_files, teardown_load_files) def test_default_load_files(): res = load_files(LOAD_FILES_ROOT) assert_equal(len(res.filenames), 1) @@ -93,7 +93,7 @@ def test_default_load_files(): assert_equal(res.data, [b("Hello World!\n")]) -@nose.tools.with_setup(setup_load_files, teardown_load_files) +@with_setup(setup_load_files, teardown_load_files) def test_load_files_w_categories_desc_and_encoding(): category = os.path.abspath(TEST_CATEGORY_DIR1).split('/').pop() res = load_files(LOAD_FILES_ROOT, description="test", @@ -104,7 +104,7 @@ def test_load_files_w_categories_desc_and_encoding(): assert_equal(res.data, [u("Hello World!\n")]) -@nose.tools.with_setup(setup_load_files, teardown_load_files) +@with_setup(setup_load_files, teardown_load_files) def test_load_files_wo_load_content(): res = load_files(LOAD_FILES_ROOT, load_content=False) assert_equal(len(res.filenames), 1) diff --git a/sklearn/decomposition/tests/test_fastica.py b/sklearn/decomposition/tests/test_fastica.py index e47489e514..d268cdc4e6 100644 --- a/sklearn/decomposition/tests/test_fastica.py +++ b/sklearn/decomposition/tests/test_fastica.py @@ -7,14 +7,13 @@ import warnings import numpy as np from scipy import stats -from nose.tools import assert_raises - from sklearn.utils.testing import assert_almost_equal from sklearn.utils.testing import assert_array_almost_equal from sklearn.utils.testing import assert_true from sklearn.utils.testing import assert_less from sklearn.utils.testing import assert_equal from sklearn.utils.testing import assert_warns +from sklearn.utils.testing import assert_raises from sklearn.decomposition import FastICA, fastica, PCA from sklearn.decomposition.fastica_ import _gs_decorrelation diff --git a/sklearn/ensemble/tests/test_base.py b/sklearn/ensemble/tests/test_base.py index 948f94c76f..8484283fcc 100644 --- a/sklearn/ensemble/tests/test_base.py +++ b/sklearn/ensemble/tests/test_base.py @@ -7,10 +7,11 @@ Testing for the base module (sklearn.ensemble.base). import numpy as np from numpy.testing import assert_equal -from nose.tools import assert_true from sklearn.utils.testing import assert_raise_message from sklearn.utils.testing import assert_not_equal +from sklearn.utils.testing import assert_true + from sklearn.datasets import load_iris from sklearn.ensemble import BaggingClassifier from sklearn.ensemble.base import _set_random_states diff --git a/sklearn/ensemble/tests/test_gradient_boosting_loss_functions.py b/sklearn/ensemble/tests/test_gradient_boosting_loss_functions.py index 8bef99c6ce..ead2c29b56 100644 --- a/sklearn/ensemble/tests/test_gradient_boosting_loss_functions.py +++ b/sklearn/ensemble/tests/test_gradient_boosting_loss_functions.py @@ -7,9 +7,8 @@ from numpy.testing import assert_array_equal from numpy.testing import assert_almost_equal from numpy.testing import assert_equal -from nose.tools import assert_raises - from sklearn.utils import check_random_state +from sklearn.utils.testing import assert_raises from sklearn.ensemble.gradient_boosting import BinomialDeviance from sklearn.ensemble.gradient_boosting import LogOddsEstimator from sklearn.ensemble.gradient_boosting import LeastSquaresError diff --git a/sklearn/feature_extraction/tests/test_feature_hasher.py b/sklearn/feature_extraction/tests/test_feature_hasher.py index 34024d59bb..c4905b9101 100644 --- a/sklearn/feature_extraction/tests/test_feature_hasher.py +++ b/sklearn/feature_extraction/tests/test_feature_hasher.py @@ -1,11 +1,10 @@ from __future__ import unicode_literals import numpy as np +from numpy.testing import assert_array_equal from sklearn.feature_extraction import FeatureHasher - -from nose.tools import assert_raises, assert_true -from numpy.testing import assert_array_equal, assert_equal +from sklearn.utils.testing import assert_raises, assert_true, assert_equal def test_feature_hasher_dicts(): @@ -71,7 +70,7 @@ def test_feature_hasher_pairs_with_string_values(): x2_nz = np.abs(x2[x2 != 0]) assert_equal([1], x1_nz) assert_equal([1], x2_nz) - assert_equal(x1, x2) + assert_array_equal(x1, x2) def test_hash_empty_input(): diff --git a/sklearn/feature_extraction/tests/test_image.py b/sklearn/feature_extraction/tests/test_image.py index 1051f99b1a..6c57788efe 100644 --- a/sklearn/feature_extraction/tests/test_image.py +++ b/sklearn/feature_extraction/tests/test_image.py @@ -6,14 +6,13 @@ import numpy as np import scipy as sp from scipy import ndimage -from nose.tools import assert_equal, assert_true from numpy.testing import assert_raises from sklearn.feature_extraction.image import ( img_to_graph, grid_to_graph, extract_patches_2d, reconstruct_from_patches_2d, PatchExtractor, extract_patches) from sklearn.utils.graph import connected_components -from sklearn.utils.testing import SkipTest +from sklearn.utils.testing import SkipTest, assert_equal, assert_true from sklearn.utils.fixes import sp_version if sp_version < (0, 12): diff --git a/sklearn/feature_extraction/tests/test_text.py b/sklearn/feature_extraction/tests/test_text.py index 6f67f7f416..88382f7d13 100644 --- a/sklearn/feature_extraction/tests/test_text.py +++ b/sklearn/feature_extraction/tests/test_text.py @@ -21,19 +21,15 @@ from sklearn.svm import LinearSVC from sklearn.base import clone import numpy as np -from nose import SkipTest -from nose.tools import assert_equal -from nose.tools import assert_false -from nose.tools import assert_not_equal -from nose.tools import assert_true -from nose.tools import assert_almost_equal from numpy.testing import assert_array_almost_equal from numpy.testing import assert_array_equal from numpy.testing import assert_raises from sklearn.utils.random import choice -from sklearn.utils.testing import (assert_in, assert_less, assert_greater, +from sklearn.utils.testing import (assert_equal, assert_false, assert_true, + assert_not_equal, assert_almost_equal, + assert_in, assert_less, assert_greater, assert_warns_message, assert_raise_message, - clean_warning_registry) + clean_warning_registry, SkipTest) from collections import defaultdict, Mapping from functools import partial diff --git a/sklearn/feature_selection/tests/test_base.py b/sklearn/feature_selection/tests/test_base.py index 8374c61ca8..e11b7d94fc 100644 --- a/sklearn/feature_selection/tests/test_base.py +++ b/sklearn/feature_selection/tests/test_base.py @@ -1,12 +1,12 @@ import numpy as np from scipy import sparse as sp -from nose.tools import assert_raises, assert_equal from numpy.testing import assert_array_equal from sklearn.base import BaseEstimator from sklearn.feature_selection.base import SelectorMixin from sklearn.utils import check_array +from sklearn.utils.testing import assert_raises, assert_equal class StepSelector(SelectorMixin, BaseEstimator): diff --git a/sklearn/feature_selection/tests/test_from_model.py b/sklearn/feature_selection/tests/test_from_model.py index 06dc3d7f42..fe170f09ad 100644 --- a/sklearn/feature_selection/tests/test_from_model.py +++ b/sklearn/feature_selection/tests/test_from_model.py @@ -1,13 +1,13 @@ import numpy as np import scipy.sparse as sp -from nose.tools import assert_raises, assert_true - +from sklearn.utils.testing import assert_true from sklearn.utils.testing import assert_less from sklearn.utils.testing import assert_greater from sklearn.utils.testing import assert_array_almost_equal from sklearn.utils.testing import assert_array_equal from sklearn.utils.testing import assert_almost_equal +from sklearn.utils.testing import assert_raises from sklearn.utils.testing import assert_warns from sklearn.utils.testing import skip_if_32bit diff --git a/sklearn/feature_selection/tests/test_rfe.py b/sklearn/feature_selection/tests/test_rfe.py index 4daa2c3b28..95b29ec3cb 100644 --- a/sklearn/feature_selection/tests/test_rfe.py +++ b/sklearn/feature_selection/tests/test_rfe.py @@ -3,7 +3,6 @@ Testing Recursive feature elimination """ import numpy as np from numpy.testing import assert_array_almost_equal, assert_array_equal -from nose.tools import assert_equal, assert_true from scipy import sparse from sklearn.feature_selection.rfe import RFE, RFECV @@ -15,7 +14,7 @@ from sklearn.model_selection import cross_val_score from sklearn.utils import check_random_state from sklearn.utils.testing import ignore_warnings -from sklearn.utils.testing import assert_greater +from sklearn.utils.testing import assert_greater, assert_equal, assert_true from sklearn.metrics import make_scorer from sklearn.metrics import get_scorer diff --git a/sklearn/gaussian_process/tests/test_gaussian_process.py b/sklearn/gaussian_process/tests/test_gaussian_process.py index 3de37865c3..916507416c 100644 --- a/sklearn/gaussian_process/tests/test_gaussian_process.py +++ b/sklearn/gaussian_process/tests/test_gaussian_process.py @@ -5,16 +5,13 @@ Testing for Gaussian Process module (sklearn.gaussian_process) # Author: Vincent Dubourg <vincent.dubourg@gmail.com> # License: BSD 3 clause -from nose.tools import raises -from nose.tools import assert_true - import numpy as np from sklearn.gaussian_process import GaussianProcess from sklearn.gaussian_process import regression_models as regression from sklearn.gaussian_process import correlation_models as correlation from sklearn.datasets import make_regression -from sklearn.utils.testing import assert_greater +from sklearn.utils.testing import assert_greater, assert_true, raises f = lambda x: x * np.sin(x) diff --git a/sklearn/linear_model/tests/test_least_angle.py b/sklearn/linear_model/tests/test_least_angle.py index 0607a143cc..9ebb12c82d 100644 --- a/sklearn/linear_model/tests/test_least_angle.py +++ b/sklearn/linear_model/tests/test_least_angle.py @@ -1,9 +1,8 @@ -from nose.tools import assert_equal - import numpy as np from scipy import linalg from sklearn.model_selection import train_test_split +from sklearn.utils.testing import assert_equal from sklearn.utils.testing import assert_array_almost_equal from sklearn.utils.testing import assert_true from sklearn.utils.testing import assert_less diff --git a/sklearn/linear_model/tests/test_theil_sen.py b/sklearn/linear_model/tests/test_theil_sen.py index 808650cde6..279beb8014 100644 --- a/sklearn/linear_model/tests/test_theil_sen.py +++ b/sklearn/linear_model/tests/test_theil_sen.py @@ -15,12 +15,13 @@ from numpy.testing import assert_array_equal, assert_array_less from numpy.testing import assert_array_almost_equal, assert_warns from scipy.linalg import norm from scipy.optimize import fmin_bfgs -from nose.tools import raises, assert_almost_equal from sklearn.exceptions import ConvergenceWarning from sklearn.linear_model import LinearRegression, TheilSenRegressor from sklearn.linear_model.theil_sen import _spatial_median, _breakdown_point from sklearn.linear_model.theil_sen import _modified_weiszfeld_step -from sklearn.utils.testing import assert_greater, assert_less +from sklearn.utils.testing import ( + assert_almost_equal, assert_greater, assert_less, raises, +) @contextmanager diff --git a/sklearn/manifold/tests/test_locally_linear.py b/sklearn/manifold/tests/test_locally_linear.py index d1052967bc..2b5b77d0f3 100644 --- a/sklearn/manifold/tests/test_locally_linear.py +++ b/sklearn/manifold/tests/test_locally_linear.py @@ -1,5 +1,4 @@ from itertools import product -from nose.tools import assert_true import numpy as np from numpy.testing import assert_almost_equal, assert_array_almost_equal @@ -10,6 +9,8 @@ from sklearn.manifold.locally_linear import barycenter_kneighbors_graph from sklearn.utils.testing import assert_less from sklearn.utils.testing import ignore_warnings from sklearn.utils.testing import assert_raise_message +from sklearn.utils.testing import assert_raises +from sklearn.utils.testing import assert_true eigen_solvers = ['dense', 'arpack'] @@ -129,7 +130,6 @@ def test_pipeline(): # Test the error raised when the weight matrix is singular def test_singular_matrix(): - from nose.tools import assert_raises M = np.ones((10, 3)) f = ignore_warnings assert_raises(ValueError, f(manifold.locally_linear_embedding), diff --git a/sklearn/manifold/tests/test_mds.py b/sklearn/manifold/tests/test_mds.py index a078afd8ca..7b432dea13 100644 --- a/sklearn/manifold/tests/test_mds.py +++ b/sklearn/manifold/tests/test_mds.py @@ -1,8 +1,8 @@ import numpy as np from numpy.testing import assert_array_almost_equal -from nose.tools import assert_raises from sklearn.manifold import mds +from sklearn.utils.testing import assert_raises def test_smacof(): diff --git a/sklearn/manifold/tests/test_spectral_embedding.py b/sklearn/manifold/tests/test_spectral_embedding.py index facefde56b..1ebd753008 100644 --- a/sklearn/manifold/tests/test_spectral_embedding.py +++ b/sklearn/manifold/tests/test_spectral_embedding.py @@ -1,6 +1,3 @@ -from nose.tools import assert_true -from nose.tools import assert_equal - from scipy.sparse import csr_matrix from scipy.sparse import csc_matrix from scipy.sparse import coo_matrix @@ -9,9 +6,6 @@ import numpy as np from numpy.testing import assert_array_almost_equal from numpy.testing import assert_array_equal -from nose.tools import assert_raises -from nose.plugins.skip import SkipTest - from sklearn.manifold.spectral_embedding_ import SpectralEmbedding from sklearn.manifold.spectral_embedding_ import _graph_is_connected from sklearn.manifold.spectral_embedding_ import _graph_connected_component @@ -22,6 +16,8 @@ from sklearn.cluster import KMeans from sklearn.datasets.samples_generator import make_blobs from sklearn.utils.graph import graph_laplacian from sklearn.utils.extmath import _deterministic_vector_sign_flip +from sklearn.utils.testing import assert_true, assert_equal, assert_raises +from sklearn.utils.testing import SkipTest # non centered, sparse centers to check the diff --git a/sklearn/metrics/cluster/tests/test_supervised.py b/sklearn/metrics/cluster/tests/test_supervised.py index b50f681fd1..913c02d877 100644 --- a/sklearn/metrics/cluster/tests/test_supervised.py +++ b/sklearn/metrics/cluster/tests/test_supervised.py @@ -1,7 +1,4 @@ import numpy as np -from nose.tools import assert_almost_equal -from nose.tools import assert_equal -from numpy.testing import assert_array_almost_equal from sklearn.metrics.cluster import adjusted_mutual_info_score from sklearn.metrics.cluster import adjusted_rand_score @@ -15,7 +12,12 @@ from sklearn.metrics.cluster import homogeneity_score from sklearn.metrics.cluster import mutual_info_score from sklearn.metrics.cluster import normalized_mutual_info_score from sklearn.metrics.cluster import v_measure_score -from sklearn.utils.testing import assert_raise_message + +from sklearn.utils.testing import ( + assert_equal, assert_almost_equal, assert_raise_message, +) +from numpy.testing import assert_array_almost_equal + score_funcs = [ adjusted_rand_score, diff --git a/sklearn/mixture/tests/test_gmm.py b/sklearn/mixture/tests/test_gmm.py index 55f0dfb83f..ccbe08906a 100644 --- a/sklearn/mixture/tests/test_gmm.py +++ b/sklearn/mixture/tests/test_gmm.py @@ -8,15 +8,15 @@ import unittest import copy import sys -from nose.tools import assert_true import numpy as np from numpy.testing import (assert_array_equal, assert_array_almost_equal, assert_raises) from scipy import stats from sklearn import mixture from sklearn.datasets.samples_generator import make_spd_matrix -from sklearn.utils.testing import (assert_greater, assert_raise_message, - assert_warns_message, ignore_warnings) +from sklearn.utils.testing import (assert_true, assert_greater, + assert_raise_message, assert_warns_message, + ignore_warnings) from sklearn.metrics.cluster import adjusted_rand_score from sklearn.externals.six.moves import cStringIO as StringIO diff --git a/sklearn/neighbors/tests/test_dist_metrics.py b/sklearn/neighbors/tests/test_dist_metrics.py index adb5c8e50c..9544edbd3d 100644 --- a/sklearn/neighbors/tests/test_dist_metrics.py +++ b/sklearn/neighbors/tests/test_dist_metrics.py @@ -7,7 +7,7 @@ from numpy.testing import assert_array_almost_equal import scipy from scipy.spatial.distance import cdist from sklearn.neighbors.dist_metrics import DistanceMetric -from nose import SkipTest +from sklearn.utils.testing import SkipTest def dist_func(x1, x2, p): diff --git a/sklearn/preprocessing/tests/test_function_transformer.py b/sklearn/preprocessing/tests/test_function_transformer.py index 6b50793e2d..dbac7730d4 100644 --- a/sklearn/preprocessing/tests/test_function_transformer.py +++ b/sklearn/preprocessing/tests/test_function_transformer.py @@ -1,8 +1,8 @@ -from nose.tools import assert_equal import numpy as np from sklearn.utils import testing from sklearn.preprocessing import FunctionTransformer +from sklearn.utils.testing import assert_equal, assert_array_equal def _make_func(args_store, kwargs_store, func=lambda X, *a, **k: X): @@ -21,7 +21,7 @@ def test_delegate_to_func(): args_store = [] kwargs_store = {} X = np.arange(10).reshape((5, 2)) - testing.assert_array_equal( + assert_array_equal( FunctionTransformer(_make_func(args_store, kwargs_store)).transform(X), X, 'transform should have returned X unchanged', @@ -48,7 +48,7 @@ def test_delegate_to_func(): kwargs_store.clear() y = object() - testing.assert_array_equal( + assert_array_equal( FunctionTransformer( _make_func(args_store, kwargs_store), pass_y=True, @@ -78,7 +78,7 @@ def test_np_log(): X = np.arange(10).reshape((5, 2)) # Test that the numpy.log example still works. - testing.assert_array_equal( + assert_array_equal( FunctionTransformer(np.log1p).transform(X), np.log1p(X), ) @@ -90,8 +90,8 @@ def test_kw_arg(): F = FunctionTransformer(np.around, kw_args=dict(decimals=3)) # Test that rounding is correct - testing.assert_array_equal(F.transform(X), - np.around(X, decimals=3)) + assert_array_equal(F.transform(X), + np.around(X, decimals=3)) def test_kw_arg_update(): @@ -102,8 +102,7 @@ def test_kw_arg_update(): F.kw_args['decimals'] = 1 # Test that rounding is correct - testing.assert_array_equal(F.transform(X), - np.around(X, decimals=1)) + assert_array_equal(F.transform(X), np.around(X, decimals=1)) def test_kw_arg_reset(): @@ -114,8 +113,7 @@ def test_kw_arg_reset(): F.kw_args = dict(decimals=1) # Test that rounding is correct - testing.assert_array_equal(F.transform(X), - np.around(X, decimals=1)) + assert_array_equal(F.transform(X), np.around(X, decimals=1)) def test_inverse_transform(): @@ -123,8 +121,10 @@ def test_inverse_transform(): # Test that inverse_transform works correctly F = FunctionTransformer( - func=np.sqrt, - inverse_func=np.around, inv_kw_args=dict(decimals=3)) - testing.assert_array_equal( - F.inverse_transform(F.transform(X)), - np.around(np.sqrt(X), decimals=3)) + func=np.sqrt, + inverse_func=np.around, inv_kw_args=dict(decimals=3), + ) + assert_array_equal( + F.inverse_transform(F.transform(X)), + np.around(np.sqrt(X), decimals=3), + ) diff --git a/sklearn/semi_supervised/tests/test_label_propagation.py b/sklearn/semi_supervised/tests/test_label_propagation.py index 5a8c1dd80d..81e7dd028b 100644 --- a/sklearn/semi_supervised/tests/test_label_propagation.py +++ b/sklearn/semi_supervised/tests/test_label_propagation.py @@ -1,8 +1,8 @@ """ test the label propagation module """ -import nose import numpy as np +from sklearn.utils.testing import assert_equal from sklearn.semi_supervised import label_propagation from sklearn.metrics.pairwise import rbf_kernel from numpy.testing import assert_array_almost_equal @@ -27,7 +27,7 @@ def test_fit_transduction(): labels = [0, 1, -1] for estimator, parameters in ESTIMATORS: clf = estimator(**parameters).fit(samples, labels) - nose.tools.assert_equal(clf.transduction_[2], 1) + assert_equal(clf.transduction_[2], 1) def test_distribution(): diff --git a/sklearn/svm/tests/test_bounds.py b/sklearn/svm/tests/test_bounds.py index ddfa79cf3d..7a280d22a6 100644 --- a/sklearn/svm/tests/test_bounds.py +++ b/sklearn/svm/tests/test_bounds.py @@ -1,7 +1,3 @@ -import nose -from nose.tools import assert_equal, assert_true -from sklearn.utils.testing import clean_warning_registry -from sklearn.utils.testing import assert_raise_message import warnings import numpy as np @@ -11,6 +7,9 @@ from sklearn.svm.bounds import l1_min_c from sklearn.svm import LinearSVC from sklearn.linear_model.logistic import LogisticRegression +from sklearn.utils.testing import assert_true, raises +from sklearn.utils.testing import assert_raise_message + dense_X = [[-1, 0], [0, 1], [1, 1], [1, 1]] sparse_X = sp.csr_matrix(dense_X) @@ -66,13 +65,13 @@ def check_l1_min_c(X, y, loss, fit_intercept=True, intercept_scaling=None): (np.asarray(clf.intercept_) != 0).any()) -@nose.tools.raises(ValueError) +@raises(ValueError) def test_ill_posed_min_c(): X = [[0, 0], [0, 0]] y = [0, 1] l1_min_c(X, y) -@nose.tools.raises(ValueError) +@raises(ValueError) def test_unsupported_loss(): l1_min_c(dense_X, Y1, 'l1') diff --git a/sklearn/svm/tests/test_sparse.py b/sklearn/svm/tests/test_sparse.py index 278e7b4e19..f2c10ceddd 100644 --- a/sklearn/svm/tests/test_sparse.py +++ b/sklearn/svm/tests/test_sparse.py @@ -1,5 +1,3 @@ -from nose.tools import assert_raises, assert_true, assert_false - import numpy as np from scipy import sparse from numpy.testing import (assert_array_almost_equal, assert_array_equal, @@ -10,7 +8,8 @@ from sklearn.datasets import make_classification, load_digits, make_blobs from sklearn.svm.tests import test_svm from sklearn.exceptions import ConvergenceWarning from sklearn.utils.extmath import safe_sparse_dot -from sklearn.utils.testing import (assert_warns, assert_raise_message, +from sklearn.utils.testing import (assert_raises, assert_true, assert_false, + assert_warns, assert_raise_message, ignore_warnings) # test sample 1 diff --git a/sklearn/svm/tests/test_svm.py b/sklearn/svm/tests/test_svm.py index 5befd2331f..33d0e0d6a7 100644 --- a/sklearn/svm/tests/test_svm.py +++ b/sklearn/svm/tests/test_svm.py @@ -9,17 +9,17 @@ from numpy.testing import assert_array_equal, assert_array_almost_equal from numpy.testing import assert_almost_equal from numpy.testing import assert_allclose from scipy import sparse -from nose.tools import assert_raises, assert_true, assert_equal, assert_false from sklearn import svm, linear_model, datasets, metrics, base from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification, make_blobs from sklearn.metrics import f1_score from sklearn.metrics.pairwise import rbf_kernel from sklearn.utils import check_random_state +from sklearn.utils.testing import assert_equal, assert_true, assert_false from sklearn.utils.testing import assert_greater, assert_in, assert_less from sklearn.utils.testing import assert_raises_regexp, assert_warns from sklearn.utils.testing import assert_warns_message, assert_raise_message -from sklearn.utils.testing import ignore_warnings +from sklearn.utils.testing import ignore_warnings, assert_raises from sklearn.exceptions import ChangedBehaviorWarning from sklearn.exceptions import ConvergenceWarning from sklearn.exceptions import NotFittedError diff --git a/sklearn/tests/test_discriminant_analysis.py b/sklearn/tests/test_discriminant_analysis.py index 2312da2440..24b7a13405 100644 --- a/sklearn/tests/test_discriminant_analysis.py +++ b/sklearn/tests/test_discriminant_analysis.py @@ -1,6 +1,5 @@ import sys import numpy as np -from nose import SkipTest from sklearn.utils.testing import assert_array_equal from sklearn.utils.testing import assert_array_almost_equal @@ -12,6 +11,7 @@ from sklearn.utils.testing import assert_raise_message from sklearn.utils.testing import assert_warns from sklearn.utils.testing import assert_greater from sklearn.utils.testing import ignore_warnings +from sklearn.utils.testing import SkipTest from sklearn.datasets import make_blobs from sklearn.discriminant_analysis import LinearDiscriminantAnalysis diff --git a/sklearn/tree/tests/test_export.py b/sklearn/tree/tests/test_export.py index e35c3fd889..1379a7703f 100644 --- a/sklearn/tree/tests/test_export.py +++ b/sklearn/tree/tests/test_export.py @@ -4,14 +4,11 @@ Testing for export functions of decision trees (sklearn.tree.export). from re import finditer -from numpy.testing import assert_equal -from nose.tools import assert_raises - from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor from sklearn.ensemble import GradientBoostingClassifier from sklearn.tree import export_graphviz from sklearn.externals.six import StringIO -from sklearn.utils.testing import assert_in +from sklearn.utils.testing import assert_in, assert_equal, assert_raises # toy sample X = [[-2, -1], [-1, -1], [-1, -2], [1, 1], [1, 2], [2, 1]] diff --git a/sklearn/utils/sparsetools/tests/test_traversal.py b/sklearn/utils/sparsetools/tests/test_traversal.py index 9b42a62118..6a0e96829b 100644 --- a/sklearn/utils/sparsetools/tests/test_traversal.py +++ b/sklearn/utils/sparsetools/tests/test_traversal.py @@ -1,9 +1,9 @@ from __future__ import division, print_function, absolute_import -from nose import SkipTest - import numpy as np from numpy.testing import assert_array_almost_equal +from sklearn.utils.testing import SkipTest + try: from scipy.sparse.csgraph import breadth_first_tree, depth_first_tree,\ csgraph_to_dense, csgraph_from_dense diff --git a/sklearn/utils/testing.py b/sklearn/utils/testing.py index b460f83ecc..1146b4f645 100644 --- a/sklearn/utils/testing.py +++ b/sklearn/utils/testing.py @@ -36,6 +36,7 @@ import tempfile import shutil import os.path as op import atexit +import unittest # WindowsError only exist on Windows try: @@ -47,19 +48,7 @@ import sklearn from sklearn.base import BaseEstimator from sklearn.externals import joblib -# Conveniently import all assertions in one place. -from nose.tools import assert_equal -from nose.tools import assert_not_equal -from nose.tools import assert_true -from nose.tools import assert_false -from nose.tools import assert_raises from nose.tools import raises -try: - from nose.tools import assert_dict_equal -except ImportError: - # Not in old versions of nose, but is only for formatting anyway - assert_dict_equal = assert_equal -from nose import SkipTest from nose import with_setup from numpy.testing import assert_almost_equal @@ -79,13 +68,31 @@ __all__ = ["assert_equal", "assert_not_equal", "assert_raises", "assert_array_almost_equal", "assert_array_less", "assert_less", "assert_less_equal", "assert_greater", "assert_greater_equal", - "assert_approx_equal"] + "assert_approx_equal", "SkipTest"] + +_dummy = unittest.TestCase('__init__') +assert_equal = _dummy.assertEqual +assert_not_equal = _dummy.assertNotEqual +assert_true = _dummy.assertTrue +assert_false = _dummy.assertFalse +assert_raises = _dummy.assertRaises try: - from nose.tools import assert_in, assert_not_in -except ImportError: - # Nose < 1.0.0 + SkipTest = unittest.case.SkipTest +except AttributeError: + # Python <= 2.6, we stil need nose here + from nose import SkipTest + + +try: + assert_dict_equal = _dummy.assertDictEqual + assert_in = _dummy.assertIn + assert_not_in = _dummy.assertNotIn +except AttributeError: + # Python <= 2.6 + + assert_dict_equal = assert_equal def assert_in(x, container): assert_true(x in container, msg="%r in %r" % (x, container)) @@ -94,9 +101,9 @@ except ImportError: assert_false(x in container, msg="%r in %r" % (x, container)) try: - from nose.tools import assert_raises_regex -except ImportError: - # for Python 2 + assert_raises_regex = _dummy.assertRaisesRegex +except AttributeError: + # for Python 2.6 def assert_raises_regex(expected_exception, expected_regexp, callable_obj=None, *args, **kwargs): """Helper function to check for message patterns in exceptions.""" @@ -378,13 +385,10 @@ class _IgnoreWarnings(object): try: - from nose.tools import assert_less -except ImportError: + assert_less = _dummy.assertLess + assert_greater = _dummy.assertGreater +except AttributeError: assert_less = _assert_less - -try: - from nose.tools import assert_greater -except ImportError: assert_greater = _assert_greater diff --git a/sklearn/utils/tests/test_bench.py b/sklearn/utils/tests/test_bench.py index 102d71d7ab..c04ba4ad25 100644 --- a/sklearn/utils/tests/test_bench.py +++ b/sklearn/utils/tests/test_bench.py @@ -2,7 +2,7 @@ import datetime from sklearn.utils.bench import total_seconds -from nose.tools import assert_equal +from sklearn.utils.testing import assert_equal def test_total_seconds(): diff --git a/sklearn/utils/tests/test_fast_dict.py b/sklearn/utils/tests/test_fast_dict.py index 19923124e8..1b0b0fd68e 100644 --- a/sklearn/utils/tests/test_fast_dict.py +++ b/sklearn/utils/tests/test_fast_dict.py @@ -1,11 +1,12 @@ """ Test fast_dict. """ import numpy as np -from nose.tools import assert_equal from sklearn.utils.fast_dict import IntFloatDict, argmin +from sklearn.utils.testing import assert_equal from sklearn.externals.six.moves import xrange + def test_int_float_dict(): rng = np.random.RandomState(0) keys = np.unique(rng.randint(100, size=10).astype(np.intp)) diff --git a/sklearn/utils/tests/test_fixes.py b/sklearn/utils/tests/test_fixes.py index 4494f87b5f..f5817f246b 100644 --- a/sklearn/utils/tests/test_fixes.py +++ b/sklearn/utils/tests/test_fixes.py @@ -5,14 +5,11 @@ import numpy as np -from nose.tools import assert_equal -from nose.tools import assert_false -from nose.tools import assert_true from numpy.testing import (assert_almost_equal, assert_array_almost_equal) - from sklearn.utils.fixes import divide, expit from sklearn.utils.fixes import astype +from sklearn.utils.testing import assert_equal, assert_false, assert_true def test_expit(): diff --git a/sklearn/utils/tests/test_metaestimators.py b/sklearn/utils/tests/test_metaestimators.py index d73c67d0d1..2a016ebefa 100644 --- a/sklearn/utils/tests/test_metaestimators.py +++ b/sklearn/utils/tests/test_metaestimators.py @@ -1,4 +1,4 @@ -from nose.tools import assert_true, assert_false +from sklearn.utils.testing import assert_true, assert_false from sklearn.utils.metaestimators import if_delegate_has_method diff --git a/sklearn/utils/tests/test_murmurhash.py b/sklearn/utils/tests/test_murmurhash.py index f92cb4a80b..f51c5f7e26 100644 --- a/sklearn/utils/tests/test_murmurhash.py +++ b/sklearn/utils/tests/test_murmurhash.py @@ -7,7 +7,7 @@ from sklearn.externals.six import b, u from sklearn.utils.murmurhash import murmurhash3_32 from numpy.testing import assert_array_almost_equal from numpy.testing import assert_array_equal -from nose.tools import assert_equal, assert_true +from sklearn.utils.testing import assert_equal, assert_true def test_mmhash3_int(): diff --git a/sklearn/utils/tests/test_seq_dataset.py b/sklearn/utils/tests/test_seq_dataset.py index fad7e3abcb..aaa3e43fc9 100644 --- a/sklearn/utils/tests/test_seq_dataset.py +++ b/sklearn/utils/tests/test_seq_dataset.py @@ -3,13 +3,13 @@ # License: BSD 3 clause import numpy as np +from numpy.testing import assert_array_equal import scipy.sparse as sp from sklearn.utils.seq_dataset import ArrayDataset, CSRDataset from sklearn.datasets import load_iris -from numpy.testing import assert_array_equal -from nose.tools import assert_equal +from sklearn.utils.testing import assert_equal iris = load_iris() X = iris.data.astype(np.float64) diff --git a/sklearn/utils/tests/test_testing.py b/sklearn/utils/tests/test_testing.py index ea76333a6e..17e9209dbc 100644 --- a/sklearn/utils/tests/test_testing.py +++ b/sklearn/utils/tests/test_testing.py @@ -2,9 +2,8 @@ import warnings import unittest import sys -from nose.tools import assert_raises - from sklearn.utils.testing import ( + assert_raises, _assert_less, _assert_greater, assert_less_equal, diff --git a/sklearn/utils/tests/test_validation.py b/sklearn/utils/tests/test_validation.py index a6268b08d1..9c57ab4e96 100644 --- a/sklearn/utils/tests/test_validation.py +++ b/sklearn/utils/tests/test_validation.py @@ -8,9 +8,9 @@ from itertools import product import numpy as np from numpy.testing import assert_array_equal import scipy.sparse as sp -from nose.tools import assert_raises, assert_true, assert_false, assert_equal -from sklearn.utils.testing import assert_raises_regexp +from sklearn.utils.testing import assert_true, assert_false, assert_equal +from sklearn.utils.testing import assert_raises, assert_raises_regexp from sklearn.utils.testing import assert_no_warnings from sklearn.utils.testing import assert_warns_message from sklearn.utils.testing import assert_warns -- GitLab