-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
TST: Fix assertNotIsInstance msg #13091
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
Conversation
so lots of things fail on windows. probably all because of comparisons on int32/int64. e.g. btw you can setup appveyor (just need to login it free), to at least see build failures. its slow but can give you a feel for errors.
|
msg, cls, type(obj))) | ||
if not isinstance(obj, cls): | ||
err_msg = "{0}Expected type {1}, found {2} instead" | ||
raise AssertionError(err_msg.format(msg, cls, type(obj))) |
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.
Why do we need our own here? Nosetests has a pretty reasonable one:
def assertIsInstance(self, obj, cls, msg=None):
"""Same as self.assertTrue(isinstance(obj, cls)), with a nicer
default message."""
if not isinstance(obj, cls):
standardMsg = '%s is not an instance of %r' % (safe_repr(obj), cls)
self.fail(self._formatMessage(msg, standardMsg))
(...although not as reasonable as pytest...)
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.
we define everything already so you can either do: self.assertIsInstance
or tm.assertIsInstance
.
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.
Right, makes sense.
General marketing of pytest: in pytest you can just do assert isinstance(x, x)
, and it writes the error message, which is all nice and pythonic
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.
@MaximilianR of course everyone likes pytest
better. I have used it for years. But changing would be a bear, not sure if its worth it.
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.
Yeah.
How dependent is the testing suite on nosetests, vs just unittest?
We were using nosetests, moved to pytest, and it worked really seamlessly. But that's because we were really only using nosetests as the runner, rather than any nose-specific features
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.
I think it would work right away. But, the power if pytest
is really using fixtures, parameterized tests, and clean looking asserts.
So need to convert most setUp/tearDown
stuff to fixtures (a lot). properly use fixture scope (e.g. db stuff which you only want to create a database once per test run; this is the most complicated).
Parameterized tests are awesome, but again, need to restructure tests a bit for that.
I suppose the actual assert mechanism could be changed, but a lot of care would be needed.
And here's the rub, I think we would have to simply switch, then start changing things as its not back-compat to nose.
Given all this I am not optomistic this could be done quickly/easily. The upside is nice & clean tests, but getting there is hard.
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.
I think it would work right away. But, the power if pytest is really using fixtures, parameterized tests, and clean looking asserts.
And here's the rub, I think we would have to simply switch, then start changing things as its not back-compat to nose.
So what's in the way of making the change to py.test and then in time move over to using its features? There's no need to move everything over immediately?
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.
nothing really. If you want to investigate actually seeing what would be needed to be changed to simply run it (and might involved a py.test compat plugin), then would be willing to switch I think. Though of course would be nice to see what is involved in adding these things: fixtures, assertion nomenclature, parameterization (e.g. maybe do one test file to see what its like).
This was discussed a little bit on the mailing list, but I don't think an issue exists for it.
@sinhrks right sorry! |
git diff upstream/master | flake8 --diff
The current error message below is confusing.