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
:
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:
...
collected 1 item
test.py::test_zero_division PASSED [100%]
============================== 1 passed in 0.00s ===============================
-
How to Debug Pytest With pdb Breakpoints?
To debug a pytest test using pdb, you can manually insert a breakpoint by adding import pdb; pdb.set_trace() in your test: import pytest def divide(x, y): return x / y def testzerodivision(): ...
Questions -
How to Disable a Test Using Pytest?
If you need to disable a specific test when running your test suite with pytest, use the pytest skip decorator. Suppose you have the following tests in your test suite: import pytest def test_addit...
Questions -
How to Solve the ModuleNotFoundError With Pytest?
To fix the ModuleNotFoundError in pytest, you can start by making your tests directory a Python package.This can be achieved by including an empty __init__.py file to the directory: └── tests/...
Questions -
How to Test a Single File Under Pytest
To run a single test file with pytest, use the command pytest followed by the file path: pytest tests/test_file.py To execute a specific test within that file, append :: and the test name to the fi...
Questions