Skip to content

Commit 5d4cf66

Browse files
authored
CLN: Refactor tests and delete duplicates (#40181)
1 parent 81114eb commit 5d4cf66

File tree

6 files changed

+31
-96
lines changed

6 files changed

+31
-96
lines changed

pandas/conftest.py

+8
Original file line numberDiff line numberDiff line change
@@ -1585,6 +1585,14 @@ def indexer_sl(request):
15851585
return request.param
15861586

15871587

1588+
@pytest.fixture(params=[tm.at, tm.loc])
1589+
def indexer_al(request):
1590+
"""
1591+
Parametrize over at.__setitem__, loc.__setitem__
1592+
"""
1593+
return request.param
1594+
1595+
15881596
@pytest.fixture
15891597
def using_array_manager(request):
15901598
"""

pandas/tests/indexing/multiindex/test_loc.py

-10
Original file line numberDiff line numberDiff line change
@@ -256,15 +256,12 @@ def test_loc_multiindex_incomplete(self):
256256

257257
result = s.loc[0:4, "a":"c"]
258258
tm.assert_series_equal(result, expected)
259-
tm.assert_series_equal(result, expected)
260259

261260
result = s.loc[:4, "a":"c"]
262261
tm.assert_series_equal(result, expected)
263-
tm.assert_series_equal(result, expected)
264262

265263
result = s.loc[0:, "a":"c"]
266264
tm.assert_series_equal(result, expected)
267-
tm.assert_series_equal(result, expected)
268265

269266
# GH 7400
270267
# multiindexer gettitem with list of indexers skips wrong element
@@ -412,13 +409,6 @@ def test_loc_getitem_duplicates_multiindex_missing_indexers(indexer, pos):
412409
tm.assert_series_equal(result, expected)
413410

414411

415-
def test_series_loc_getitem_fancy(multiindex_year_month_day_dataframe_random_data):
416-
s = multiindex_year_month_day_dataframe_random_data["A"]
417-
expected = s.reindex(s.index[49:51])
418-
result = s.loc[[(2000, 3, 10), (2000, 3, 13)]]
419-
tm.assert_series_equal(result, expected)
420-
421-
422412
@pytest.mark.parametrize("columns_indexer", [([], slice(None)), (["foo"], [])])
423413
def test_loc_getitem_duplicates_multiindex_empty_indexer(columns_indexer):
424414
# GH 8737

pandas/tests/indexing/multiindex/test_slice.py

-4
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,6 @@ def test_per_axis_per_level_getitem(self):
144144
# This used to treat [1] as positional GH#16396
145145
df.loc[slice(None), [1]]
146146

147-
result = df.loc[(slice(None), [1]), :]
148-
expected = df.iloc[[0, 3]]
149-
tm.assert_frame_equal(result, expected)
150-
151147
# not lexsorted
152148
assert df.index._lexsort_depth == 2
153149
df = df.sort_index(level=1, axis=0)

pandas/tests/indexing/test_at.py

+13-33
Original file line numberDiff line numberDiff line change
@@ -88,71 +88,51 @@ def test_at_with_duplicate_axes_requires_scalar_lookup(self):
8888

8989
class TestAtErrors:
9090
# TODO: De-duplicate/parametrize
91-
# test_at_series_raises_key_error, test_at_frame_raises_key_error,
9291
# test_at_series_raises_key_error2, test_at_frame_raises_key_error2
9392

94-
def test_at_series_raises_key_error(self):
93+
def test_at_series_raises_key_error(self, indexer_al):
9594
# GH#31724 .at should match .loc
9695

9796
ser = Series([1, 2, 3], index=[3, 2, 1])
98-
result = ser.at[1]
99-
assert result == 3
100-
result = ser.loc[1]
97+
result = indexer_al(ser)[1]
10198
assert result == 3
10299

103100
with pytest.raises(KeyError, match="a"):
104-
ser.at["a"]
105-
with pytest.raises(KeyError, match="a"):
106-
# .at should match .loc
107-
ser.loc["a"]
101+
indexer_al(ser)["a"]
108102

109-
def test_at_frame_raises_key_error(self):
103+
def test_at_frame_raises_key_error(self, indexer_al):
110104
# GH#31724 .at should match .loc
111105

112106
df = DataFrame({0: [1, 2, 3]}, index=[3, 2, 1])
113107

114-
result = df.at[1, 0]
115-
assert result == 3
116-
result = df.loc[1, 0]
108+
result = indexer_al(df)[1, 0]
117109
assert result == 3
118110

119111
with pytest.raises(KeyError, match="a"):
120-
df.at["a", 0]
121-
with pytest.raises(KeyError, match="a"):
122-
df.loc["a", 0]
112+
indexer_al(df)["a", 0]
123113

124114
with pytest.raises(KeyError, match="a"):
125-
df.at[1, "a"]
126-
with pytest.raises(KeyError, match="a"):
127-
df.loc[1, "a"]
115+
indexer_al(df)[1, "a"]
128116

129-
def test_at_series_raises_key_error2(self):
117+
def test_at_series_raises_key_error2(self, indexer_al):
130118
# at should not fallback
131119
# GH#7814
132120
# GH#31724 .at should match .loc
133121
ser = Series([1, 2, 3], index=list("abc"))
134-
result = ser.at["a"]
135-
assert result == 1
136-
result = ser.loc["a"]
122+
result = indexer_al(ser)["a"]
137123
assert result == 1
138124

139125
with pytest.raises(KeyError, match="^0$"):
140-
ser.at[0]
141-
with pytest.raises(KeyError, match="^0$"):
142-
ser.loc[0]
126+
indexer_al(ser)[0]
143127

144-
def test_at_frame_raises_key_error2(self):
128+
def test_at_frame_raises_key_error2(self, indexer_al):
145129
# GH#31724 .at should match .loc
146130
df = DataFrame({"A": [1, 2, 3]}, index=list("abc"))
147-
result = df.at["a", "A"]
148-
assert result == 1
149-
result = df.loc["a", "A"]
131+
result = indexer_al(df)["a", "A"]
150132
assert result == 1
151133

152134
with pytest.raises(KeyError, match="^0$"):
153-
df.at["a", 0]
154-
with pytest.raises(KeyError, match="^0$"):
155-
df.loc["a", 0]
135+
indexer_al(df)["a", 0]
156136

157137
def test_at_getitem_mixed_index_no_fallback(self):
158138
# GH#19860

pandas/tests/indexing/test_datetime.py

+5-27
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def test_consistency_with_tz_aware_scalar(self):
8181
result = df[0].at[0]
8282
assert result == expected
8383

84-
def test_indexing_with_datetimeindex_tz(self):
84+
def test_indexing_with_datetimeindex_tz(self, indexer_sl):
8585

8686
# GH 12050
8787
# indexing on a series with a datetimeindex with tz
@@ -93,48 +93,26 @@ def test_indexing_with_datetimeindex_tz(self):
9393

9494
for sel in (index, list(index)):
9595
# getitem
96-
result = ser[sel]
96+
result = indexer_sl(ser)[sel]
9797
expected = ser.copy()
9898
if sel is not index:
9999
expected.index = expected.index._with_freq(None)
100100
tm.assert_series_equal(result, expected)
101101

102102
# setitem
103103
result = ser.copy()
104-
result[sel] = 1
105-
expected = Series(1, index=index)
106-
tm.assert_series_equal(result, expected)
107-
108-
# .loc getitem
109-
result = ser.loc[sel]
110-
expected = ser.copy()
111-
if sel is not index:
112-
expected.index = expected.index._with_freq(None)
113-
tm.assert_series_equal(result, expected)
114-
115-
# .loc setitem
116-
result = ser.copy()
117-
result.loc[sel] = 1
104+
indexer_sl(result)[sel] = 1
118105
expected = Series(1, index=index)
119106
tm.assert_series_equal(result, expected)
120107

121108
# single element indexing
122109

123110
# getitem
124-
assert ser[index[1]] == 1
111+
assert indexer_sl(ser)[index[1]] == 1
125112

126113
# setitem
127114
result = ser.copy()
128-
result[index[1]] = 5
129-
expected = Series([0, 5], index=index)
130-
tm.assert_series_equal(result, expected)
131-
132-
# .loc getitem
133-
assert ser.loc[index[1]] == 1
134-
135-
# .loc setitem
136-
result = ser.copy()
137-
result.loc[index[1]] = 5
115+
indexer_sl(result)[index[1]] = 5
138116
expected = Series([0, 5], index=index)
139117
tm.assert_series_equal(result, expected)
140118

pandas/tests/indexing/test_na_indexing.py

+5-22
Original file line numberDiff line numberDiff line change
@@ -63,30 +63,13 @@ def test_series_mask_boolean(values, dtype, mask, indexer_class, frame):
6363
tm.assert_equal(result, expected)
6464

6565

66-
@pytest.mark.parametrize("frame", [True, False])
67-
def test_na_treated_as_false(frame):
66+
def test_na_treated_as_false(frame_or_series, indexer_sli):
6867
# https://github.com/pandas-dev/pandas/issues/31503
69-
s = pd.Series([1, 2, 3], name="name")
70-
71-
if frame:
72-
s = s.to_frame()
68+
obj = frame_or_series([1, 2, 3])
7369

7470
mask = pd.array([True, False, None], dtype="boolean")
7571

76-
result = s[mask]
77-
expected = s[mask.fillna(False)]
78-
79-
result_loc = s.loc[mask]
80-
expected_loc = s.loc[mask.fillna(False)]
72+
result = indexer_sli(obj)[mask]
73+
expected = indexer_sli(obj)[mask.fillna(False)]
8174

82-
result_iloc = s.iloc[mask]
83-
expected_iloc = s.iloc[mask.fillna(False)]
84-
85-
if frame:
86-
tm.assert_frame_equal(result, expected)
87-
tm.assert_frame_equal(result_loc, expected_loc)
88-
tm.assert_frame_equal(result_iloc, expected_iloc)
89-
else:
90-
tm.assert_series_equal(result, expected)
91-
tm.assert_series_equal(result_loc, expected_loc)
92-
tm.assert_series_equal(result_iloc, expected_iloc)
75+
tm.assert_equal(result, expected)

0 commit comments

Comments
 (0)