Skip to content

Commit 247124f

Browse files
committed
modify test case to paramaetized
1 parent c2eff85 commit 247124f

File tree

1 file changed

+46
-49
lines changed

1 file changed

+46
-49
lines changed

pandas/tests/io/json/test_normalize.py

+46-49
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,38 @@ def author_missing_data():
6666
}]
6767

6868

69+
@pytest.fixture
70+
def data_records_path_with_nested_data():
71+
return [{'CreatedBy': {'Name': 'User001'},
72+
'Lookup': [{'TextField': 'Some text',
73+
'UserField': {'Id': 'ID001', 'Name': 'Name001'}},
74+
{'TextField': 'Some text',
75+
'UserField': {'Id': 'ID001', 'Name': 'Name001'}}
76+
],
77+
'Image': {'a': 'b'},
78+
'random': [{'foo': 'something', 'bar': 'else'},
79+
{'foo': 'something2', 'bar': 'else2'}]
80+
}]
81+
82+
83+
def expected_data_for_test_records_path_with_nested_data():
84+
return {0: [{"TextField": "Some text",
85+
'UserField': {'Id': 'ID001', 'Name': 'Name001'},
86+
"CreatedBy": {"Name": "User001"},
87+
'Image': {'a': 'b'}},
88+
{"TextField": "Some text",
89+
'UserField': {'Id': 'ID001', 'Name': 'Name001'},
90+
"CreatedBy": {"Name": "User001"},
91+
'Image': {'a': 'b'}}],
92+
1: [{"TextField": "Some text", "UserField.Id": "ID001",
93+
"UserField.Name": "Name001",
94+
"CreatedBy": {"Name": "User001"},
95+
'Image': {'a': 'b'}},
96+
{"TextField": "Some text", "UserField.Id": "ID001",
97+
"UserField.Name": "Name001",
98+
"CreatedBy": {"Name": "User001"},
99+
'Image': {'a': 'b'}}]}
100+
69101
class TestJSONNormalize(object):
70102

71103
def test_simple_records(self):
@@ -277,55 +309,20 @@ def test_missing_field(self, author_missing_data):
277309
expected = DataFrame(ex_data)
278310
tm.assert_frame_equal(result, expected)
279311

280-
def test_records_path_with_nested_data(self):
281-
data = [{'CreatedBy': {'Name': 'User001'},
282-
'Lookup': [{'TextField': 'Some text',
283-
'UserField': {'Id': 'ID001', 'Name': 'Name001'}},
284-
{'TextField': 'Some text',
285-
'UserField': {'Id': 'ID001', 'Name': 'Name001'}}
286-
],
287-
'Image': {'a': 'b'},
288-
'random': [{'foo': 'something', 'bar': 'else'},
289-
{'foo': 'something2', 'bar': 'else2'}]
290-
}]
291-
ex_data_level_0 = [{"TextField": "Some text",
292-
'UserField': {'Id': 'ID001', 'Name': 'Name001'},
293-
"CreatedBy": {"Name": "User001"},
294-
'Image': {'a': 'b'}},
295-
{"TextField": "Some text",
296-
'UserField': {'Id': 'ID001', 'Name': 'Name001'},
297-
"CreatedBy": {"Name": "User001"},
298-
'Image': {'a': 'b'}}]
299-
300-
expected_level_0 = DataFrame(ex_data_level_0,
301-
columns=['TextField', 'UserField',
302-
'CreatedBy', "Image"])
303-
result_level_0 = json_normalize(data, record_path=["Lookup"],
304-
meta=[["CreatedBy"], ["Image"]],
305-
max_level=0)
306-
307-
ex_data_level_1 = [{"TextField": "Some text", "UserField.Id": "ID001",
308-
"UserField.Name": "Name001",
309-
"CreatedBy": {"Name": "User001"},
310-
'Image': {'a': 'b'}},
311-
{"TextField": "Some text", "UserField.Id": "ID001",
312-
"UserField.Name": "Name001",
313-
"CreatedBy": {"Name": "User001"},
314-
'Image': {'a': 'b'}}]
315-
316-
expected_level_1 = DataFrame(ex_data_level_1,
317-
columns=['TextField',
318-
'UserField.Id',
319-
'UserField.Name',
320-
'CreatedBy',
321-
"Image"]
322-
)
323-
result_level_1 = json_normalize(data, record_path=["Lookup"],
324-
meta=[["CreatedBy"], ["Image"]],
325-
max_level=1)
326-
327-
tm.assert_frame_equal(expected_level_0, result_level_0)
328-
tm.assert_frame_equal(expected_level_1, result_level_1)
312+
@pytest.mark.parametrize("max_level, columns", [
313+
(0, ['TextField', 'UserField', 'CreatedBy', "Image"] ),
314+
(1, ['TextField', 'UserField.Id', 'UserField.Name', 'CreatedBy', "Image"]),
315+
])
316+
def test_records_path_with_nested_data(self, data_records_path_with_nested_data,
317+
max_level, columns):
318+
test_input = data_records_path_with_nested_data
319+
expected_data = expected_data_for_test_records_path_with_nested_data()[max_level]
320+
result = json_normalize(test_input,
321+
record_path=["Lookup"],
322+
meta=[["CreatedBy"], ["Image"]],
323+
max_level=max_level)
324+
expected_df = DataFrame(data=expected_data, columns=columns)
325+
tm.assert_frame_equal(expected_df, result)
329326

330327

331328
class TestNestedToRecord(object):

0 commit comments

Comments
 (0)