-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
unittest
: Improve self.assert(Not)AlmostEqual(s)
#8066
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
1b7ac44
`unittest`: Improve `self.assertAlmostEqual`
AlexWaygood 615e997
Fix pyright complaints
AlexWaygood 704eda1
Avoid regression with `datetime`, add a test
AlexWaygood 33c02d2
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] 70c2420
Improve tests
AlexWaygood 93df0e0
One more
AlexWaygood 389f686
Take care of the deprecated aliases as well
AlexWaygood 3a30d0b
Merge remote-tracking branch 'origin/master' into almostequal
AlexWaygood a227de6
Get all tests to pass correctly
AlexWaygood 6ed6d96
Fix
AlexWaygood 761a483
Unused import
AlexWaygood File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# pyright: reportUnnecessaryTypeIgnoreComment=true | ||
|
||
import unittest | ||
from datetime import datetime, timedelta | ||
from decimal import Decimal | ||
from fractions import Fraction | ||
|
||
case = unittest.TestCase() | ||
|
||
case.assertAlmostEqual(2.4, 2.41) | ||
case.assertAlmostEqual(Fraction(49, 50), Fraction(48, 50)) | ||
case.assertAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), delta=timedelta(hours=1)) | ||
case.assertAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), None, "foo", timedelta(hours=1)) | ||
case.assertAlmostEqual(Decimal("1.1"), Decimal("1.11")) | ||
case.assertAlmostEqual(2.4, 2.41, places=8) | ||
case.assertAlmostEqual(2.4, 2.41, delta=0.02) | ||
case.assertAlmostEqual(2.4, 2.41, None, "foo", 0.02) | ||
|
||
case.assertAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore[call-overload] | ||
case.assertAlmostEqual("foo", "bar") # type: ignore[call-overload] | ||
case.assertAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore[arg-type] | ||
|
||
case.assertNotAlmostEqual(Fraction(49, 50), Fraction(48, 50)) | ||
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), delta=timedelta(hours=1)) | ||
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), None, "foo", timedelta(hours=1)) | ||
|
||
case.assertNotAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore[call-overload] | ||
case.assertNotAlmostEqual("foo", "bar") # type: ignore[call-overload] | ||
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore[arg-type] | ||
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple thoughts about our tests in general:
call-overload
orarg-type
error.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, interesting idea. Tests like this file especially are basically very doctest-esque, just without the
>>>
prompt.Yes, and compounding this problem, there's the fact that we generally only include tests for the trickiest functions to write stubs for. These are usually the ones where mypy ends up emitting really weird error codes. E.g. loads of the ones in
test_sum.py
are[list-item]
, and that's really meaningless; we shouldn't be asserting that mypy should emit such a meaningless error code (and there's no real reason why we should be giving mypy special treatment in these tests either). It seemed like a good idea at the time, but it's probably time to call it a day on the error-codes-in-tests.