Using assert for testing#

The Python assert statement means - “raise an error unless the following expression is equivalent to True”.

By “equivalent to True”, we mean the expression returns True from Python truth value testing.

assert raises an AssertionError if the statement is equivalent to False. It does nothing if the statement is equivalent to True.

So, if you assert an_expression and there is no error, then the result of an_expression was equivalent to True. The following expressions evaluate to True, and therefore the asserts do not raise an error:

# No errors here.
assert True
assert 10 == 10
assert 10 % 2 == 0

These expressions are equivalent to False, and the asserts do raise errors:

# Raises error
assert False
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In [2], line 2
      1 # Raises error
----> 2 assert False

AssertionError: 
# Raises error
assert 10 == 11
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In [3], line 2
      1 # Raises error
----> 2 assert 10 == 11

AssertionError: 

Although assert does work with expression values of True and False, the test that assert uses is more general than expr_result == True. In fact, assert uses {doc}truth value testing <truthiness> to decide whether to raise an AssertionError or not:

# No error
assert ['some', 'elements']  # not-empty list tests as True
# Error
assert []  # an empty list tests as False
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In [5], line 2
      1 # Error
----> 2 assert []

AssertionError: 
# No errors
assert 10  # any number other than zero evaluates as True
assert 1
# Error
assert 0
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In [7], line 2
      1 # Error
----> 2 assert 0

AssertionError: 
# Error
assert None
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In [8], line 2
      1 # Error
----> 2 assert None

AssertionError: