Guide to Using Assertions in Python

Assertions are a powerful tool in Python for debugging and error-checking. They allow you to test assumptions in your code and raise an error if the assumption is false. In this guide, you will learn how to use assertions effectively in Python.

1. Introduction to Assertions

An assertion is a condition or expression that you believe to be true at a specific point in your code. Assertions help you catch errors and bugs early in development, making it easier to identify problems and correct them.

2. Using the assert Statement

In Python, you can use the assert statement to assert that a particular condition holds true. If the condition is False, an AssertionError is raised. The basic syntax of the assert statement is as follows:

assert condition, "Optional error message"

Here’s an example:

def divide(x, y):
    assert y != 0, "Division by zero is not allowed"
    return x / y

In this example, the assert statement checks whether y is not equal to zero. If it’s zero, the assertion fails, and an AssertionError is raised with the optional error message.

3. Enabling and Disabling Assertions

Assertions are disabled by default in Python. To enable them, you can use the -O (capital letter ‘O’) command line switch when running your script. Without this switch, assertions are enabled.

To ensure assertions are always enabled, you can use the -OO (double capital ‘O’) switch.

In PyCharm, ensure that the “Emulate terminal in output console” option is unchecked in the project settings to enable assertions during debugging.

4. Customizing Assertion Error Messages

You can customize the error message displayed when an assertion fails. This can be helpful for identifying the specific issue. Just provide a descriptive message as the second argument to the assert statement:

assert condition, "This condition should be True, but it's not"

5. Best Practices and Use Cases

  • Use assertions to check assumptions and conditions that you believe should always be true.
  • Don’t use assertions for input validation or error handling for end-users. They are meant for debugging and development purposes.
  • Avoid complex expressions in assertions; keep them simple and easy to understand.
  • Use assertions as a diagnostic tool to identify issues during development and testing. Remove or disable them in production code.
  • Combine assertions with proper testing using testing frameworks like unittest or pytest for comprehensive testing and debugging.

By using assertions in your Python code, you can identify issues and incorrect assumptions early in development, which makes your code more reliable and easier to maintain.

Hello, I’m Anuj. I make and teach software.

My website is free of advertisements, affiliate links, tracking or analytics, sponsored posts, and paywalls.
Follow me on LinkedIn, X (twitter) to get timely updates when I post new articles.
My students are the reason this website exists. ❤️

Feedback Display