18
18
19
19
from __future__ import print_function
20
20
21
+ import traceback
22
+
21
23
from absl .testing import absltest
22
24
import apache_beam as beam
23
25
from apache_beam .testing import util
@@ -47,19 +49,24 @@ def _matcher(actual):
47
49
"""Matcher function for comparing the example dicts."""
48
50
try :
49
51
# Check number of examples.
50
- test .assertEqual (len (actual ), len (expected ))
51
-
52
+ test .assertLen (actual , len (expected ))
52
53
for i in range (len (actual )):
53
54
for key in actual [i ]:
54
55
# Check each feature value.
55
56
if isinstance (expected [i ][key ], np .ndarray ):
56
- test .assertEqual (actual [i ][key ].dtype , expected [i ][key ].dtype )
57
+ test .assertEqual (
58
+ expected [i ][key ].dtype , actual [i ][key ].dtype ,
59
+ 'Expected dtype {}, found {} in actual[{}][{}]: {}' .format (
60
+ expected [i ][key ].dtype , actual [i ][key ].dtype , i , key ,
61
+ actual [i ][key ]))
57
62
np .testing .assert_equal (actual [i ][key ], expected [i ][key ])
58
63
else :
59
- test .assertEqual (actual [i ][key ], expected [i ][key ])
64
+ test .assertEqual (
65
+ expected [i ][key ], actual [i ][key ],
66
+ 'Unexpected value of actual[{}][{}]' .format (i , key ))
60
67
61
- except AssertionError as e :
62
- raise util .BeamAssertException ('Failed assert: ' + str ( e ))
68
+ except AssertionError :
69
+ raise util .BeamAssertException (traceback . format_exc ( ))
63
70
64
71
return _matcher
65
72
@@ -81,8 +88,9 @@ def make_dataset_feature_stats_list_proto_equal_fn(
81
88
def _matcher (actual : List [statistics_pb2 .DatasetFeatureStatisticsList ]):
82
89
"""Matcher function for comparing DatasetFeatureStatisticsList proto."""
83
90
try :
84
- test .assertEqual (len (actual ), 1 )
85
- test .assertEqual (len (actual [0 ].datasets ), len (expected_result .datasets ))
91
+ test .assertLen (actual , 1 ,
92
+ 'Expected exactly one DatasetFeatureStatisticsList' )
93
+ test .assertLen (actual [0 ].datasets , len (expected_result .datasets ))
86
94
87
95
sorted_actual_datasets = sorted (actual [0 ].datasets , key = lambda d : d .name )
88
96
sorted_expected_datasets = sorted (expected_result .datasets ,
@@ -92,8 +100,8 @@ def _matcher(actual: List[statistics_pb2.DatasetFeatureStatisticsList]):
92
100
assert_dataset_feature_stats_proto_equal (test ,
93
101
sorted_actual_datasets [i ],
94
102
sorted_expected_datasets [i ])
95
- except AssertionError as e :
96
- raise util .BeamAssertException ('Failed assert: ' + str ( e ))
103
+ except AssertionError :
104
+ raise util .BeamAssertException (traceback . format_exc ( ))
97
105
98
106
return _matcher
99
107
@@ -109,21 +117,21 @@ def assert_feature_proto_equal(
109
117
expected: The expected feature proto.
110
118
"""
111
119
112
- test .assertEqual ( len ( actual .custom_stats ) , len (expected .custom_stats ))
120
+ test .assertLen ( actual .custom_stats , len (expected .custom_stats ))
113
121
expected_custom_stats = {}
114
122
for expected_custom_stat in expected .custom_stats :
115
123
expected_custom_stats [expected_custom_stat .name ] = expected_custom_stat
116
124
117
125
for actual_custom_stat in actual .custom_stats :
118
- test .assertTrue (actual_custom_stat .name in expected_custom_stats )
126
+ test .assertIn (actual_custom_stat .name , expected_custom_stats )
119
127
expected_custom_stat = expected_custom_stats [actual_custom_stat .name ]
120
128
compare .assertProtoEqual (
121
- test , actual_custom_stat , expected_custom_stat , normalize_numbers = True )
129
+ test , expected_custom_stat , actual_custom_stat , normalize_numbers = True )
122
130
del actual .custom_stats [:]
123
131
del expected .custom_stats [:]
124
132
125
133
# Compare the rest of the proto without numeric custom stats
126
- compare .assertProtoEqual (test , actual , expected , normalize_numbers = True )
134
+ compare .assertProtoEqual (test , expected , actual , normalize_numbers = True )
127
135
128
136
129
137
def assert_dataset_feature_stats_proto_equal (
@@ -139,9 +147,14 @@ def assert_dataset_feature_stats_proto_equal(
139
147
actual: The actual DatasetFeatureStatistics proto.
140
148
expected: The expected DatasetFeatureStatistics proto.
141
149
"""
142
- test .assertEqual (actual .name , expected .name )
143
- test .assertEqual (actual .num_examples , expected .num_examples )
144
- test .assertEqual (len (actual .features ), len (expected .features ))
150
+ test .assertEqual (
151
+ expected .name , actual .name , 'Expected name to be {}, found {} in '
152
+ 'DatasetFeatureStatistics {}' .format (expected .name , actual .name , actual ))
153
+ test .assertEqual (
154
+ expected .num_examples , actual .num_examples ,
155
+ 'Expected num_examples to be {}, found {} in DatasetFeatureStatsitics {}'
156
+ .format (expected .num_examples , actual .num_examples , actual ))
157
+ test .assertLen (actual .features , len (expected .features ))
145
158
146
159
expected_features = {}
147
160
for feature in expected .features :
@@ -382,13 +395,16 @@ def _matcher(actual_tables):
382
395
"""Arrow tables matcher fn."""
383
396
test .assertLen (actual_tables , len (expected_tables ))
384
397
for i in range (len (expected_tables )):
385
- test .assertEqual (actual_tables [i ].num_columns ,
386
- expected_tables [i ].num_columns )
398
+ test .assertEqual (
399
+ expected_tables [i ].num_columns , actual_tables [i ].num_columns ,
400
+ 'Expected {} columns, found {} in table {}' .format (
401
+ expected_tables [i ].num_columns , actual_tables [i ].num_columns ,
402
+ actual_tables [i ]))
387
403
for column_name , expected_column in zip (
388
404
expected_tables [i ].schema .names , expected_tables [i ].columns ):
389
405
actual_column = actual_tables [i ].column (column_name )
390
- test .assertEqual ( len ( actual_column .data .chunks ) ,
391
- len (expected_column .data .chunks ))
406
+ test .assertLen ( actual_column .data .chunks ,
407
+ len (expected_column .data .chunks ))
392
408
for j in range (len (expected_column .data .chunks )):
393
409
actual_chunk = actual_column .data .chunk (j )
394
410
expected_chunk = expected_column .data .chunk (j )
0 commit comments