Skip to content

Commit 65db78a

Browse files
Show percent differnce when BaseTestCase.assertAlmostEqualWithinPercentage fails
1 parent dc3fa78 commit 65db78a

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

tests/base_test_case.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ def assertAlmostEqualWithinPercentage(self, expected, actual, msg: str | None =
2727
raise ValueError(f'msg must be a string (you may have meant to pass percent={msg})')
2828

2929
if isinstance(expected, numbers.Real):
30-
self.assertAlmostEqual(expected, actual, msg=msg, delta=abs(percent / 100.0 * expected))
30+
try:
31+
self.assertAlmostEqual(expected, actual, msg=msg, delta=abs(percent / 100.0 * expected))
32+
except AssertionError as ae:
33+
difference_percent = abs(100.0 * (actual - expected) / expected)
34+
raise AssertionError(f'{actual} != {expected} within {percent}% ({difference_percent:.2f}%)') from ae
3135
else:
3236
if isinstance(expected, list) and isinstance(actual, list):
3337
suggest = f'self.assertListAlmostEqual({expected}, {actual}, msg={msg}, percent={percent})'

0 commit comments

Comments
 (0)