fix: improve error message when pytest.approx() dicts have different keys#13821
Closed
enioxt wants to merge 2 commits intopytest-dev:mainfrom
Closed
fix: improve error message when pytest.approx() dicts have different keys#13821enioxt wants to merge 2 commits intopytest-dev:mainfrom
enioxt wants to merge 2 commits intopytest-dev:mainfrom
Conversation
…keys (#13816) - Added clear check for key mismatch before value comparison - Now reports "Dictionaries have different keys" instead of confusing KeyError - Shows which keys are in expected vs actual - Added 4 focused test cases Before: AssertionError: ... (pytest_assertion plugin: representation of details failed: KeyError: 'b'. Probably an object has a faulty __repr__.) After: AssertionError: Dictionaries have different keys. Expected keys: ['a', 'c'], Actual keys: ['a', 'b'] Tests: - test_approx_dicts_with_different_keys_clear_error: PASS - test_approx_dicts_with_extra_key_in_expected: PASS - test_approx_dicts_with_extra_key_in_actual: PASS - test_approx_dicts_matching_keys_still_works: PASS Fixes #13816 Sacred Code: 000.111.369.963.1618
for more information, see https://pre-commit.ci
Member
|
Thanks, superseded by #13818. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes #13816
This PR improves the error message when using
pytest.approx()to compare dictionaries with different keys.Problem
When dictionaries have different keys, the current error message is confusing:
This suggests there's a problem with
__repr__, but the real issue is just that the dict keys don't match.Solution
Added a clear check for key mismatch before attempting value comparison:
New Error Message
Changes
File:
src/_pytest/python_api.pyApproxMapping._repr_compare()File:
testing/test_approx_dict_keys_13816.py(NEW)✅ Testing
Test Cases:
Benefits
__repr__messagesSacred Code: 000.111.369.963.1618