Overview:
- Python provides an assert statement for the developers to make sure the program invariants are correct during the testing and development of the program.
- assert is a keyword in python.
- Python assert, accepts a Boolean expression and the execution is stopped with an AssertionError when the Boolean expression evaluates to false.
- The assert statements will be translated only if __debug__ is enabled. That is when there is no optimization using the command line option –O, has been requested for.
- The assert statements will be skipped in the optimized python code.
Courtesy: Windy_
Example:
- The example is a trivial class, assume it is reasonably bigger and significant class and the criticality requires more than one developer to work on this class on the same day.
- Unless the developer who writes method color()makes sure that area is calculated correctly , the coloring will be beyond the boundaries of the circle or will not cover enough till the boundary.
- Even if such class is developed and or managed by one developer at a time it is always good for the developer to make the invariants of the circle object valid at all the times.
- Thus in ensuring program correctness the assert statement is an essential tool for the developer.
#Python – assert() example import math
class Circle: radius = 0 area = 0
def __init__(self, radius): self.radius = radius
def color(self): assert(self.area==2*math.pi*self.radius) print("coloring done")
def area(self): self.area = 2*math.pi*self.radius
redCircle = Circle(5) #redCircle.area() redCircle.color() |
Output:
Since the function call redCircle.area()is commented, area is not calculated for the instance redCircle due to which an AssertionError
is thrown.
Traceback (most recent call last): File "assert_ex.py", line 19, in <module> redCircle.color() File "assert_ex.py", line 11, in color assert(self.area==2*math.pi*self.radius) AssertionError |