50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from pmdarima import context_managers as ctx
|
|
from pmdarima.compat.pytest import pytest_error_str
|
|
|
|
import pytest
|
|
|
|
|
|
def test_except_and_reraise_do_reraise():
|
|
with pytest.raises(KeyError) as ke:
|
|
with ctx.except_and_reraise(
|
|
ValueError,
|
|
raise_err=KeyError,
|
|
raise_msg="bar message"
|
|
):
|
|
raise ValueError("contains foo message")
|
|
|
|
msg = pytest_error_str(ke)
|
|
assert "bar message" in msg
|
|
assert "raised from ValueError" in msg
|
|
|
|
|
|
def test_except_and_reraise_no_reraise():
|
|
with pytest.raises(KeyError) as ke:
|
|
with ctx.except_and_reraise(
|
|
ValueError,
|
|
raise_err=TypeError,
|
|
raise_msg="bar message"
|
|
):
|
|
raise KeyError("foo message")
|
|
|
|
assert "foo message" in pytest_error_str(ke)
|
|
|
|
|
|
@pytest.mark.parametrize('err', [ValueError, KeyError, TypeError])
|
|
def test_multiple(err):
|
|
|
|
class FooError(BaseException):
|
|
pass
|
|
|
|
with pytest.raises(FooError) as fe:
|
|
with ctx.except_and_reraise(
|
|
ValueError, KeyError, TypeError,
|
|
raise_err=FooError,
|
|
raise_msg="gotcha, fam",
|
|
):
|
|
raise err("Boo!")
|
|
|
|
assert "gotcha, fam" in pytest_error_str(fe)
|