This rule raises an issue when using an ``++assert++`` statement on a tuple literal. == Why is this an issue? When tested for truthiness, a sequence or collection will evaluate to `False` if it is empty (its ``++__len__++`` method returns 0) and to `True` if it contains at least one element. Using the ``assert`` statement on a tuple literal will therefore always fail if the tuple is empty, and always succeed otherwise. The ``++assert++`` statement does not take 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. === Code examples ==== Noncompliant code example [source,python] ---- def test_values(a, b): assert (a, b) # Noncompliant: will always be True ---- ==== Compliant solution [source,python] ---- 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 ---- == Resources * https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement[Python documentation - The ``++assert++`` statement] * https://docs.python.org/3/library/stdtypes.html#truth-value-testing[Python documentation - Truth Value Testing] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Fix this assertion on a tuple literal; did you mean "assert A, B". === Highlighting The tuple parameter ''' == Comments And Links (visible only on this page) === deprecates: S1721 endif::env-github,rspecator-view[]