How to Assert if an Exception Is Raised With Pytest?

Better Stack Team
Updated on May 15, 2024

Pytest can be used to test whether a function raises an exception. For instance, consider a division function that raises a ZeroDivisionError if there is an attempt to divide by zero:

 
def divide(x, y):
    return x / y

divide(9, 0)

Attempting to execute this function with zero as the divisor results in a ZeroDivisionError:

Output
Traceback (most recent call last):
  File "/users/stanley/code.py", line 5, in <module>
    divide(9, 0)
  File "/users/stanley/code.py", line 2, in divide
    return x / y
           ~~^~~
ZeroDivisionError: division by zero

To verify that this exception is raised as expected, use the pytest.raises in a test case:

 
import pytest

def divide(x, y):
    return x / y

def test_zero_division():
    with pytest.raises(ZeroDivisionError):
        divide(9, 0)

When this test is run, it confirms that the divide() function behaves as expected by successfully raising a ZeroDivisionError when dividing by zero, indicated by a passing test result:

Output
...
collected 1 item

test.py::test_zero_division PASSED                                       [100%]

============================== 1 passed in 0.00s ===============================

Make your mark

Join the writer's program

Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them.

Write for us
Writer of the month
Marin Bezhanov
Marin is a software engineer and architect with a broad range of experience working...
Build on top of Better Stack

Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email.

community@betterstack.com

or submit a pull request and help us build better products for everyone.

See the full list of amazing projects on github