Using the assert
statement on a tuple literal will always fail if the tuple is empty, and always succeed otherwise.
The assert
statement does not have parentheses around its parameters. Calling assert(x, y)
will test if the tuple
(x, y)
is True, which is always the case.
There are two possible fixes:
- If your intention is to test the first value of the tuple and use the second value as a message, simply remove the parentheses.
- If your intention is to check that every element of the tuple is
True
, test each value separately.
Noncompliant Code Example
def test_values(a, b):
assert (a, b) # Noncompliant
Compliant Solution
def test_values(a, b):
# If you mean to test "a" and use "b" as an error message
assert a, b
# If you mean to test the values of "a" and "b"
assert a and b
See