Skip to content

Confusing explanation for pytest.approx(subset) == superset on mappings #13722

@bluetech

Description

@bluetech

Consider this:

import pytest def test_it(): assert pytest.approx({"a": 1, "b": 2}) == {"a": 1, "b": 2, "c": 3}

Currently results in this output:

 def test_it(): > assert pytest.approx({"a": 1, "b": 2}) == {"a": 1, "b": 2, "c": 3} E AssertionError: assert approx({'a': ... 2 ± 2.0e-06}) == {'a': 1, 'b': 2, 'c': 3} E E comparison failed. Mismatched elements: 0 / 2: E Max absolute difference: -inf E Max relative difference: -inf E Index | Obtained | Expected 

The "comparison failed" messages doesn't actually show anything wrong (no mismatches), which is confusing.

I think it should give a message like ApproxSequence does when the lengths don't match:

E Impossible to compare mappings with different sizes. E Lengths: 2 and 3 

Metadata

Metadata

Assignees

Labels

topic: approxrelated to pytest.approx functiontopic: reportingrelated to terminal output and user-facing messages and errorstype: bugproblem that needs to be addressed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions