Skip to content

pytest approx wrong formatting return - printing all values as wrong. #12444

Closed

Description

@natsala13

Hey! Thanks for this great library!
I am using pytest.approx to compare between 2 dicts (which are not in the same order), whenever the 2 dicts are equal the asserts passes. but if only 1 element is wrong the assert fails (as expected) but the output message shows as if all values were different instead of printing only the wrong one.

pytest == 8.2.0
python == 3.11.7
Ubuntu == 20.04

def test_approx_dict_equal():  # This tests passes!
    assert {'a': 1, 'c': 3} == pytest.approx({'a': 1, 'c': 3})


def test_approx_dict_ordered():  # This tests fails as expected and return CORRECT output
    assert {'a': 1, 'c': 5} == pytest.approx({'a': 1, 'c': 3})


def test_approx_dict_unordered():  # This tests fails as expected and return WRONG output
    assert {'c': 5, 'a': 1} == pytest.approx({'a': 1, 'c': 3})

and the output I get from the two failing tests is:

================================================= short test summary info ==================================================
FAILED tests/test_debug_pytest.py::test_approx_dict_ordered - AssertionError: assert {'a': 1, 'c': 5} == approx({'a': 1 ± 1.0e-06, 'c': 3 ± 3.0e-06})

  comparison failed. Mismatched elements: 1 / 2:
  Max absolute difference: 2
  Max relative difference: 0.6666666666666666
  Index | Obtained | Expected
  c     | 5        | 3 ± 3.0e-06
FAILED tests/test_debug_pytest.py::test_approx_dict_unordered - AssertionError: assert {'c': 5, 'a': 1} == approx({'a': 1 ± 1.0e-06, 'c': 3 ± 3.0e-06})

  comparison failed. Mismatched elements: 2 / 2:
  Max absolute difference: 4
  Max relative difference: 4.0
  Index | Obtained | Expected
  a     | 1        | 1 ± 1.0e-06
  c     | 5        | 3 ± 3.0e-06
======================================== 2 failed, 1 passed, 4 deselected in 0.37s =========================================

Activity

  1. added
    type: bugproblem that needs to be addressed
    topic: rewriterelated to the assertion rewrite mechanism
    on Jun 24, 2024
  2. added a commit that references this issue on Jan 25, 2026
    e95a843
  3. added a commit that references this issue on Jan 25, 2026
    dd6001f
  4. added a commit that references this issue on Jan 25, 2026
    72ae54c
  5. added a commit that references this issue on Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic: rewriterelated to the assertion rewrite mechanismtype: 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