fix: assertAlmostEqual with precision

This commit is contained in:
barredterra 2023-01-26 11:39:41 +01:00
parent 9bccedc761
commit 4bcb12617c
2 changed files with 5 additions and 3 deletions

View file

@ -1068,7 +1068,7 @@ class BaseDocument:
def is_dummy_password(self, pwd):
return "".join(set(pwd)) == "*"
def precision(self, fieldname, parentfield=None):
def precision(self, fieldname, parentfield=None) -> int | None:
"""Returns float precision for a particular field (or get global default).
:param fieldname: Fieldname for which precision is required.

View file

@ -55,12 +55,14 @@ class FrappeTestCase(unittest.TestCase):
else:
self._compare_field(value, actual.get(field), actual, field)
def _compare_field(self, expected, actual, doc, field):
def _compare_field(self, expected, actual, doc: BaseDocument, field: str):
msg = f"{field} should be same."
if isinstance(expected, float):
precision = doc.precision(field)
self.assertAlmostEqual(expected, actual, f"{field} should be same to {precision} digits")
self.assertAlmostEqual(
expected, actual, places=precision, msg=f"{field} should be same to {precision} digits"
)
elif isinstance(expected, (bool, int)):
self.assertEqual(expected, cint(actual), msg=msg)
elif isinstance(expected, datetime_like_types):