【发布时间】:2021-10-29 09:27:29
【问题描述】:
我想知道是否有更好的方法以及使用 pytest 测试 raise X from Y 的选项。
这是一个虚拟示例:
import pytest
class AException(Exception):
pass
class A:
def __init__(self) -> None:
raise AException("Class A")
class C:
def __init__(self) -> None:
try:
A()
except AException as err:
raise ValueError("C Failed") from err
def test_class_c():
with pytest.raises(ValueError):
C()
在此示例中,测试应确认它从 AException 中从 Class A 中提升了 ValueError。
显而易见的解决方案是这样传递消息:
except AException as err:
raise ValueError(f"C Failed: {err}") from err
然后匹配它:
def test_class_c():
with pytest.raises(ValueError, match="Class A"):
C()
但是还有其他方法吗?
【问题讨论】:
标签: python python-3.x pytest