diff --git a/pandas/_testing/asserters.py b/pandas/_testing/asserters.py index 047e8f91df23e..bbd5e60a5a812 100644 --- a/pandas/_testing/asserters.py +++ b/pandas/_testing/asserters.py @@ -188,7 +188,7 @@ def assert_index_equal( check_order: bool = True, rtol: float = 1.0e-5, atol: float = 1.0e-8, - obj: str = "Index", + obj: str | None = None, ) -> None: """ Check that left and right Index are equal. @@ -217,7 +217,7 @@ def assert_index_equal( Relative tolerance. Only used when check_exact is False. atol : float, default 1e-8 Absolute tolerance. Only used when check_exact is False. - obj : str, default 'Index' + obj : str, default 'Index' or 'MultiIndex' Specify object name being compared, internally used to show appropriate assertion message. @@ -235,6 +235,9 @@ def assert_index_equal( """ __tracebackhide__ = True + if obj is None: + obj = "MultiIndex" if isinstance(left, MultiIndex) else "Index" + def _check_types(left, right, obj: str = "Index") -> None: if not exact: return @@ -283,7 +286,7 @@ def _check_types(left, right, obj: str = "Index") -> None: right = cast(MultiIndex, right) for level in range(left.nlevels): - lobj = f"MultiIndex level [{level}]" + lobj = f"{obj} level [{level}]" try: # try comparison on levels/codes to avoid densifying MultiIndex assert_index_equal( @@ -314,7 +317,7 @@ def _check_types(left, right, obj: str = "Index") -> None: obj=lobj, ) # get_level_values may change dtype - _check_types(left.levels[level], right.levels[level], obj=obj) + _check_types(left.levels[level], right.levels[level], obj=lobj) # skip exact index checking when `check_categorical` is False elif check_exact and check_categorical: @@ -527,7 +530,7 @@ def assert_interval_array_equal( kwargs["check_freq"] = False assert_equal(left._left, right._left, obj=f"{obj}.left", **kwargs) - assert_equal(left._right, right._right, obj=f"{obj}.left", **kwargs) + assert_equal(left._right, right._right, obj=f"{obj}.right", **kwargs) assert_attr_equal("closed", left, right, obj=obj) diff --git a/pandas/tests/util/test_assert_frame_equal.py b/pandas/tests/util/test_assert_frame_equal.py index 28d96ea25cba7..ea954756d63c8 100644 --- a/pandas/tests/util/test_assert_frame_equal.py +++ b/pandas/tests/util/test_assert_frame_equal.py @@ -79,7 +79,7 @@ def test_frame_equal_shape_mismatch(df1, df2, frame_or_series): DataFrame.from_records( {"a": [1.0, 2.0], "b": [2.1, 1.5], "c": ["l1", "l2"]}, index=["a", "b"] ), - "MultiIndex level \\[0\\] are different", + "DataFrame\\.index level \\[0\\] are different", ), ], ) diff --git a/pandas/tests/util/test_assert_interval_array_equal.py b/pandas/tests/util/test_assert_interval_array_equal.py index 8cc4ade3d7e95..aad27672c0f6f 100644 --- a/pandas/tests/util/test_assert_interval_array_equal.py +++ b/pandas/tests/util/test_assert_interval_array_equal.py @@ -1,7 +1,11 @@ import pytest -from pandas import interval_range +from pandas import ( + Interval, + interval_range, +) import pandas._testing as tm +from pandas.arrays import IntervalArray @pytest.mark.parametrize( @@ -79,3 +83,18 @@ def test_interval_array_equal_start_mismatch(): with pytest.raises(AssertionError, match=msg): tm.assert_interval_array_equal(arr1, arr2) + + +def test_interval_array_equal_end_mismatch_only(): + arr1 = IntervalArray([Interval(0, 1), Interval(0, 5)]) + arr2 = IntervalArray([Interval(0, 1), Interval(0, 6)]) + + msg = """\ +IntervalArray.right are different + +IntervalArray.right values are different \\(50.0 %\\) +\\[left\\]: \\[1, 5\\] +\\[right\\]: \\[1, 6\\]""" + + with pytest.raises(AssertionError, match=msg): + tm.assert_interval_array_equal(arr1, arr2) diff --git a/pandas/tests/util/test_assert_series_equal.py b/pandas/tests/util/test_assert_series_equal.py index a3b24c029fbac..c3cd90f2edfb3 100644 --- a/pandas/tests/util/test_assert_series_equal.py +++ b/pandas/tests/util/test_assert_series_equal.py @@ -137,7 +137,7 @@ def test_less_precise(data1, data2, any_float_dtype, decimals): DataFrame.from_records( {"a": [1.0, 2.0], "b": [2.1, 1.5], "c": ["l1", "l2"]}, index=["a", "b"] ).c, - "MultiIndex level \\[0\\] are different", + "Series\\.index level \\[0\\] are different", ), ], )