我正在对新的 python 数据类进行一些自学。
可以传递给数据类装饰器的参数之一是frozen=True,以使对象不可变。
文档(和经验)表明:
dataclasses.FrozenInstanceError
将引发异常。
当单元测试时(使用pytest),以下测试通过:
def test_change_page_url_values_raises_error(self, PAGE_URL):
page_url = PageURL(PAGE_URL)
with pytest.raises(AttributeError) as error:
page_url.value = PAGE_URL
其中 PageURL 是一个带有 freeze=True 参数的数据类。
任何想法为什么 pytest 表明此操作(为 page_url.value 分配值)会引发属性错误?FrozenInstanceError 是否继承自 AttributeError?
注意:如果我更改单元测试以测试不同的异常(即 TypeError),测试会按预期失败。