Prefer actual-expected to expected-actual in assertions #5129
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.
Relates-to: #4776
As far as I know, there is no general convention about the order (actual-expected vs. expected-actual) in pytest assertions. However, I think a consistent order is desirable in order to quickly grasp what is going wrong in a failing test.
In my opinion, there is at least one strong argument for actual-expected:
SIM300
offlake8-simplify
is about avoiding yoda conditions. Thus,age == 42
is preferred to42 == age
. Avoiding yoda conditions often results in actual-expected order.Further, most examples in pytest documentation are in actual-expected order, e.g. https://docs.pytest.org/en/6.2.x/index.html. (The same applies to unittest: https://docs.python.org/3/library/unittest.html) Probably, actual-expected is the more natural or at least more common order.
I am not aware if there is a linter that can help to keep actual-expected order because sometimes the context is required in order to decide which is actual and which is expected. At least, if most of the tests use a consistent order it will be more likely that this order is used in new tests.