[7.4.x] Fix error assertion handling in approx when None in dict comparison (#11180)
Co-authored-by: Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>
This commit is contained in:
parent
c71b5df734
commit
511adf85be
|
@ -0,0 +1 @@
|
||||||
|
Fixed error assertion handling in :func:`pytest.approx` when ``None`` is an expected or received value when comparing dictionaries.
|
|
@ -266,19 +266,20 @@ class ApproxMapping(ApproxBase):
|
||||||
approx_side_as_map.items(), other_side.values()
|
approx_side_as_map.items(), other_side.values()
|
||||||
):
|
):
|
||||||
if approx_value != other_value:
|
if approx_value != other_value:
|
||||||
max_abs_diff = max(
|
if approx_value.expected is not None and other_value is not None:
|
||||||
max_abs_diff, abs(approx_value.expected - other_value)
|
max_abs_diff = max(
|
||||||
)
|
max_abs_diff, abs(approx_value.expected - other_value)
|
||||||
if approx_value.expected == 0.0:
|
|
||||||
max_rel_diff = math.inf
|
|
||||||
else:
|
|
||||||
max_rel_diff = max(
|
|
||||||
max_rel_diff,
|
|
||||||
abs(
|
|
||||||
(approx_value.expected - other_value)
|
|
||||||
/ approx_value.expected
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
if approx_value.expected == 0.0:
|
||||||
|
max_rel_diff = math.inf
|
||||||
|
else:
|
||||||
|
max_rel_diff = max(
|
||||||
|
max_rel_diff,
|
||||||
|
abs(
|
||||||
|
(approx_value.expected - other_value)
|
||||||
|
/ approx_value.expected
|
||||||
|
),
|
||||||
|
)
|
||||||
different_ids.append(approx_key)
|
different_ids.append(approx_key)
|
||||||
|
|
||||||
message_data = [
|
message_data = [
|
||||||
|
|
|
@ -122,6 +122,23 @@ class TestApprox:
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
assert_approx_raises_regex(
|
||||||
|
{"a": 1.0, "b": None, "c": None},
|
||||||
|
{
|
||||||
|
"a": None,
|
||||||
|
"b": 1000.0,
|
||||||
|
"c": None,
|
||||||
|
},
|
||||||
|
[
|
||||||
|
r" comparison failed. Mismatched elements: 2 / 3:",
|
||||||
|
r" Max absolute difference: -inf",
|
||||||
|
r" Max relative difference: -inf",
|
||||||
|
r" Index \| Obtained\s+\| Expected\s+",
|
||||||
|
rf" a \| {SOME_FLOAT} \| None",
|
||||||
|
rf" b \| None\s+\| {SOME_FLOAT} ± {SOME_FLOAT}",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
assert_approx_raises_regex(
|
assert_approx_raises_regex(
|
||||||
[1.0, 2.0, 3.0, 4.0],
|
[1.0, 2.0, 3.0, 4.0],
|
||||||
[1.0, 3.0, 3.0, 5.0],
|
[1.0, 3.0, 3.0, 5.0],
|
||||||
|
|
Loading…
Reference in New Issue