oursolutionarchitectoursolutionarchitect
  • Python Questions and Answers
  • Python - Programming Examples
  • Python - Quick Guide
  • Python - Useful Resources
  • Python - Discussion
    • Selected Reading
    • Q&A

    Python - Assertions


    An assertion is a sanity-check that you can turn on or turn off when you are done with your testing of the program.

    • The easiest way to think of an assertion is to liken it to a raise-if statement (or to be more accurate, a raise-if-not statement). An expression is tested, and if the result comes up false, an exception is raised.

    • Assertions are carried out by the assert statement, the newest keyword to Python, introduced in version 1.5.

    • Programmers often place assertions at the start of a function to check for valid input, and after a function call to check for valid output.

    The assert Statement

    When it encounters an assert statement, Python evaluates the accompanying expression, which is hopefully true. If the expression is false, Python raises an AssertionError exception.

    The syntax for assert is −

    assert Expression[, Arguments]
    

    If the assertion fails, Python uses ArgumentExpression as the argument for the AssertionError. AssertionError exceptions can be caught and handled like any other exception, using the try-except statement. If they are not handled, they will terminate the program and produce a traceback.

    Example

    print ('enter marks out of 100')
    num=75
    assert num>=0 and num<=100
    print ('marks obtained: ', num)
    
    num=125
    assert num>=0 and num<=100
    print ('marks obtained: ', num)
    

    It will produce the following output

    enter marks out of 100
    marks obtained: 75
    Traceback (most recent call last):
     File "C:\Users\user\example.py", line 7, in <module>
      assert num>=0 and num<=100
                        ^^^^^^^^
    AssertionError
    

    To display custom error message, put a string after the expression in the assert statement −

    assert num>=0 and num<=100, "only numbers in 0-100 accepted"
    

    The AssertionError is also a built-in exception. So it can be used as argument in except block. When input causes AssertionError exception, it will be handled by except block. The except block treats string in assert statement goes as exception object.

    try:
       num=int(input('enter a number'))
       assert (num >=0), "only non negative numbers accepted"
       print (num)
    except AssertionError as msg:
       print (msg)