|
5 | 5 |
|
6 | 6 |
|
7 | 7 | @pytest.fixture(params=[True, False])
|
8 |
| -def by_blocks(request): |
| 8 | +def by_blocks_fixture(request): |
| 9 | + return request.param |
| 10 | + |
| 11 | + |
| 12 | +@pytest.fixture(params=['DataFrame', 'Series']) |
| 13 | +def obj_fixture(request): |
9 | 14 | return request.param
|
10 | 15 |
|
11 | 16 |
|
@@ -70,29 +75,35 @@ def _assert_not_frame_equal_both(a, b, **kwargs):
|
70 | 75 |
|
71 | 76 |
|
72 | 77 | @pytest.mark.parametrize("check_like", [True, False])
|
73 |
| -def test_frame_equal_row_order_mismatch(check_like): |
| 78 | +def test_frame_equal_row_order_mismatch(check_like, obj_fixture): |
74 | 79 | df1 = DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]},
|
75 | 80 | index=["a", "b", "c"])
|
76 | 81 | df2 = DataFrame({"A": [3, 2, 1], "B": [6, 5, 4]},
|
77 | 82 | index=["c", "b", "a"])
|
78 | 83 |
|
79 | 84 | if not check_like: # Do not ignore row-column orderings.
|
80 |
| - msg = "DataFrame.index are different" |
| 85 | + msg = "{obj}.index are different".format(obj=obj_fixture) |
81 | 86 | with pytest.raises(AssertionError, match=msg):
|
82 |
| - assert_frame_equal(df1, df2, check_like=check_like) |
| 87 | + assert_frame_equal(df1, |
| 88 | + df2, |
| 89 | + check_like=check_like, |
| 90 | + obj=obj_fixture) |
83 | 91 | else:
|
84 |
| - _assert_frame_equal_both(df1, df2, check_like=check_like) |
| 92 | + _assert_frame_equal_both(df1, |
| 93 | + df2, |
| 94 | + check_like=check_like, |
| 95 | + obj=obj_fixture) |
85 | 96 |
|
86 | 97 |
|
87 | 98 | @pytest.mark.parametrize("df1,df2", [
|
88 | 99 | (DataFrame({"A": [1, 2, 3]}), DataFrame({"A": [1, 2, 3, 4]})),
|
89 | 100 | (DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}), DataFrame({"A": [1, 2, 3]})),
|
90 | 101 | ])
|
91 |
| -def test_frame_equal_shape_mismatch(df1, df2): |
92 |
| - msg = "DataFrame are different" |
| 102 | +def test_frame_equal_shape_mismatch(df1, df2, obj_fixture): |
| 103 | + msg = "{obj} are different".format(obj=obj_fixture) |
93 | 104 |
|
94 | 105 | with pytest.raises(AssertionError, match=msg):
|
95 |
| - assert_frame_equal(df1, df2) |
| 106 | + assert_frame_equal(df1, df2, obj=obj_fixture) |
96 | 107 |
|
97 | 108 |
|
98 | 109 | @pytest.mark.parametrize("df1,df2,msg", [
|
@@ -136,72 +147,81 @@ def test_empty_dtypes(check_dtype):
|
136 | 147 | assert_frame_equal(df1, df2, **kwargs)
|
137 | 148 |
|
138 | 149 |
|
139 |
| -def test_frame_equal_index_mismatch(): |
140 |
| - msg = """DataFrame\\.index are different |
| 150 | +def test_frame_equal_index_mismatch(obj_fixture): |
| 151 | + msg = """{obj}\\.index are different |
141 | 152 |
|
142 |
| -DataFrame\\.index values are different \\(33\\.33333 %\\) |
| 153 | +{obj}\\.index values are different \\(33\\.33333 %\\) |
143 | 154 | \\[left\\]: Index\\(\\['a', 'b', 'c'\\], dtype='object'\\)
|
144 |
| -\\[right\\]: Index\\(\\['a', 'b', 'd'\\], dtype='object'\\)""" |
| 155 | +\\[right\\]: Index\\(\\['a', 'b', 'd'\\], dtype='object'\\)""".format( |
| 156 | + obj=obj_fixture) |
145 | 157 |
|
146 | 158 | df1 = DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]},
|
147 | 159 | index=["a", "b", "c"])
|
148 | 160 | df2 = DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]},
|
149 | 161 | index=["a", "b", "d"])
|
150 | 162 |
|
151 | 163 | with pytest.raises(AssertionError, match=msg):
|
152 |
| - assert_frame_equal(df1, df2) |
| 164 | + assert_frame_equal(df1, df2, obj=obj_fixture) |
153 | 165 |
|
154 | 166 |
|
155 |
| -def test_frame_equal_columns_mismatch(): |
156 |
| - msg = """DataFrame\\.columns are different |
| 167 | +def test_frame_equal_columns_mismatch(obj_fixture): |
| 168 | + msg = """{obj}\\.columns are different |
157 | 169 |
|
158 |
| -DataFrame\\.columns values are different \\(50\\.0 %\\) |
| 170 | +{obj}\\.columns values are different \\(50\\.0 %\\) |
159 | 171 | \\[left\\]: Index\\(\\['A', 'B'\\], dtype='object'\\)
|
160 |
| -\\[right\\]: Index\\(\\['A', 'b'\\], dtype='object'\\)""" |
| 172 | +\\[right\\]: Index\\(\\['A', 'b'\\], dtype='object'\\)""".format( |
| 173 | + obj=obj_fixture) |
161 | 174 |
|
162 | 175 | df1 = DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]},
|
163 | 176 | index=["a", "b", "c"])
|
164 | 177 | df2 = DataFrame({"A": [1, 2, 3], "b": [4, 5, 6]},
|
165 | 178 | index=["a", "b", "c"])
|
166 | 179 |
|
167 | 180 | with pytest.raises(AssertionError, match=msg):
|
168 |
| - assert_frame_equal(df1, df2) |
| 181 | + assert_frame_equal(df1, df2, obj=obj_fixture) |
169 | 182 |
|
170 | 183 |
|
171 |
| -def test_frame_equal_block_mismatch(by_blocks): |
172 |
| - msg = """DataFrame\\.iloc\\[:, 1\\] are different |
| 184 | +def test_frame_equal_block_mismatch(by_blocks_fixture, obj_fixture): |
| 185 | + msg = """{obj}\\.iloc\\[:, 1\\] are different |
173 | 186 |
|
174 |
| -DataFrame\\.iloc\\[:, 1\\] values are different \\(33\\.33333 %\\) |
| 187 | +{obj}\\.iloc\\[:, 1\\] values are different \\(33\\.33333 %\\) |
175 | 188 | \\[left\\]: \\[4, 5, 6\\]
|
176 |
| -\\[right\\]: \\[4, 5, 7\\]""" |
| 189 | +\\[right\\]: \\[4, 5, 7\\]""".format(obj=obj_fixture) |
177 | 190 |
|
178 | 191 | df1 = DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
|
179 | 192 | df2 = DataFrame({"A": [1, 2, 3], "B": [4, 5, 7]})
|
180 | 193 |
|
181 | 194 | with pytest.raises(AssertionError, match=msg):
|
182 |
| - assert_frame_equal(df1, df2, by_blocks=by_blocks) |
| 195 | + assert_frame_equal(df1, |
| 196 | + df2, |
| 197 | + by_blocks=by_blocks_fixture, |
| 198 | + obj=obj_fixture) |
183 | 199 |
|
184 | 200 |
|
185 | 201 | @pytest.mark.parametrize("df1,df2,msg", [
|
186 | 202 | (DataFrame({"A": ["á", "à", "ä"], "E": ["é", "è", "ë"]}),
|
187 | 203 | DataFrame({"A": ["á", "à", "ä"], "E": ["é", "è", "e̊"]}),
|
188 |
| - """DataFrame\\.iloc\\[:, 1\\] are different |
| 204 | + """{obj}\\.iloc\\[:, 1\\] are different |
189 | 205 |
|
190 |
| -DataFrame\\.iloc\\[:, 1\\] values are different \\(33\\.33333 %\\) |
| 206 | +{obj}\\.iloc\\[:, 1\\] values are different \\(33\\.33333 %\\) |
191 | 207 | \\[left\\]: \\[é, è, ë\\]
|
192 | 208 | \\[right\\]: \\[é, è, e̊\\]"""),
|
193 | 209 | (DataFrame({"A": ["á", "à", "ä"], "E": ["é", "è", "ë"]}),
|
194 | 210 | DataFrame({"A": ["a", "a", "a"], "E": ["e", "e", "e"]}),
|
195 |
| - """DataFrame\\.iloc\\[:, 0\\] are different |
| 211 | + """{obj}\\.iloc\\[:, 0\\] are different |
196 | 212 |
|
197 |
| -DataFrame\\.iloc\\[:, 0\\] values are different \\(100\\.0 %\\) |
| 213 | +{obj}\\.iloc\\[:, 0\\] values are different \\(100\\.0 %\\) |
198 | 214 | \\[left\\]: \\[á, à, ä\\]
|
199 | 215 | \\[right\\]: \\[a, a, a\\]"""),
|
200 | 216 | ])
|
201 |
| -def test_frame_equal_unicode(df1, df2, msg, by_blocks): |
| 217 | +def test_frame_equal_unicode(df1, df2, msg, by_blocks_fixture, obj_fixture): |
202 | 218 | # see gh-20503
|
203 | 219 | #
|
204 | 220 | # Test ensures that `assert_frame_equals` raises the right exception
|
205 | 221 | # when comparing DataFrames containing differing unicode objects.
|
| 222 | + msg = msg.format(obj=obj_fixture) |
206 | 223 | with pytest.raises(AssertionError, match=msg):
|
207 |
| - assert_frame_equal(df1, df2, by_blocks=by_blocks) |
| 224 | + assert_frame_equal(df1, |
| 225 | + df2, |
| 226 | + by_blocks=by_blocks_fixture, |
| 227 | + obj=obj_fixture) |
0 commit comments