How to assert expected exceptions in pytest
To assert expected exceptions in pytest, you can use the pytest.raises
context manager. Here’s an example:
import pytest
def divide(a, b):
if b == 0:
raise ZeroDivisionError("Cannot divide by zero")
return a / b
def test_divide_by_zero():
with pytest.raises(ZeroDivisionError) as exc_info:
divide(10, 0)
assert str(exc_info.value) == "Cannot divide by zero"
In this example, we have a function divide
that performs division. If the divisor b
is zero, it raises a ZeroDivisionError
with a custom error message.
In the test_divide_by_zero
test function, we use the pytest.raises
context manager to assert that a specific exception is raised. Inside the context manager, we call the divide
function with arguments that would result in a division by zero. If the expected exception is raised, the context manager captures the exception information. We can then access the exception using exc_info.value
and assert its properties, such as the error message.
Note that the pytest.raises
context manager will pass the test if the expected exception is raised. If the exception is not raised or a different exception is raised, the test will fail.
Make sure to replace ZeroDivisionError
with the actual exception you expect to be raised, and adjust the assertion as needed for your specific case.
See https://docs.pytest.org/en/7.1.x/how-to/assert.html#assertions-about-expected-exceptions for more details.
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!