scikit-learn: Remove the use of assert_raises and assert_raises_regex from the tests
~(Saving this for the upcoming sprints, ideally)~
Let’s remove the use of assert_raises, assert_raise_message, and assert_raises_regex.
These should be replaced with the pytest context manager:
with pytest.raises(TheException, match="the expected message"):
function_call_here()
(no need for match in the case of assert_raises and assert_raise_message I guess).
For contributors: pick one of the modules below, and please comment on this issue saying e.g. “I’m working on cluster/tests”, to avoid other contributors choosing the same modules.
You can see all the occurrences of the entries that need to be removed with e.g. git grep "assert_raises" sklearn/ensemble/tests/.
Modules that need cleaning
-
sklearn/cluster/tests/#14649) -
sklearn/compose/tests/#14670 -
sklearn/covariance/tests/#14674 -
sklearn/datasets/tests/#14676 -
sklearn/decomposition/tests/#14679 -
sklearn/ensemble/tests/#19399 -
sklearn/feature_extraction/tests/#14694 -
sklearn/feature_selection/tests/#14697 -
sklearn/linear_model/tests/#19440 -
sklearn/manifold/tests/#14699 -
sklearn/metrics/cluster/tests/#14707 -
sklearn/metrics/tests/#14715 -
sklearn/model_selection/tests/#19592 -
sklearn/neighbors/tests/#19388 -
sklearn/neural_network/tests/#14716 -
sklearn/preprocessing/tests/#14717 -
sklearn/semi_supervised/tests/#14841 -
sklearn/svm/tests/#14727 -
sklearn/tests/#19500 -
sklearn/tree/tests/#14737 -
sklearn/utils/estimator_checks.py -
sklearn/utils/tests/#16337
Some more:
-
see #20065sklearn/metrics/cluster/tests/test_unsupervised.py -
sklearn/compose/tests/test_column_transformer.py -
sklearn/covariance/tests/test_robust_covariance.py -
sklearn/datasets/tests/test_openml.py -
sklearn/datasets/tests/test_samples_generator.py -
sklearn/decomposition/tests/test_nmf.py -
sklearn/decomposition/tests/test_factor_analysis.py -
sklearn/feature_extraction/tests/test_text.py -
sklearn/linear_model/tests/test_bayes.py -
sklearn/linear_model/tests/test_sag.py -
sklearn/linear_model/tests/test_ransac.py -
sklearn/manifold/tests/test_locally_linear.py -
sklearn/metrics/cluster/tests/test_unsupervised.py -
sklearn/mixture/tests/test_bayesian_mixture.py -
sklearn/mixture/tests/test_gaussian_mixture.py -
sklearn/svm/tests/test_bounds.py -
sklearn/svm/tests/test_sparse.py -
sklearn/svm/tests/test_svm.py -
sklearn/tests/test_base.py -
sklearn/tests/test_isotonic.py
Also:
-
sklearn/utils/tests/test_estimator_checks.pybut this should use the customraisesCM insklearn/utils/_testing.pyinstead, as we don’t want to use pytest for this file
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 52 (52 by maintainers)
I also don’t find any left overs. As discussed, the exception is
sklearn/utils/estimator_checks.py(and dependendies) where we do not want to depend on pytest.A Great Thank You to all contributors!
@NicolasHug the test_estimator_checks are also cleaned.
@NicolasHug The following files have been cleaned on #20104:
Based on the PR from #20065, test_unsupervised can also be marked as done because only the function names have assert_raises.
I think we can just get these done now. I upadted the list with some more stuff
git grep assert_raisesstill finds occurences (excluding estimator_checks). Same forassert_raises_regexpandassert_raise_message. I guess some PRs pretended to clean a whole module while only cleaning a subset.Yes, you can replace them as well. Though if the resulting diff is already large, better to do it in a separate PR.
Me and @abdulelahsm are working on
sklearn/linear_model/tests/lol @rth
Their docs say:
And
but I’m pretty sure these can be done with a regex.
Yeah nose2pytest doesn’t support assert_raises, from the readme,
and
But it still should be possible to do it with a regex I think?