Pydantic:在另一个数据类中有一个数据类时出现验证错误

Pydantic: Validation error when having a dataclass inside another dataclass

提问人:PepeLoperena 提问时间:11/8/2023 最后编辑:PepeLoperena 更新时间:11/8/2023 访问量:41

问:

我正在尝试解决以下问题:

我在另一个数据类中有一个数据类:

@dataclass(frozen=True)
class Location:
    longitude: float  
    latitude: float 

位置也添加到以下数据类中:

@dataclass(frozen=True)
class Address:
    original_address: str
    accuracy: Accuracy
    **location: Location**

在另一个类上创建对象地址的实例时(在本例中,我是在测试用例文件上执行此操作),此时会出现警告:Unexpected Argument

这是设置的样子:

 address = Address(
            original_address="text", 
            accuracy=Accuracy.ROOFTOP, 
            location=Location(latitude=90.0, longitude=180.0)
 )

运行以下测试时:

    def test_when_location_is_not_in_range_then_print_exception(self):
        invalid_location = Location(latitude=200.0, longitude=300.0)

        with self.assertRaises(ValueError) as context:
            address = Address(
                original_address="test",
                accuracy=Accuracy.ROOFTOP,
                location=invalid_location,
            )

        self.assertEqual(
            str(context.exception), "Location is out of range", "Expected exception message: 'Location is out of range'"
        )

我遇到以下错误:

Input should be a dictionary or an instance of Location [type=dataclass_type, input_value=Location(longitude=180.0, latitude=90.0), input_type=Location]

我已经围绕这个问题做了几次测试,但我仍然不知道如何解决它。其中一个测试是通过在同一文件中执行对象的实例来完成的,如果在那里完成,一切似乎都可以正常工作。只有当我在不同的文件上执行实例时,才会出现顶部所述的错误。

如果您想看到之前完成的调查,请点击此链接

Python 验证 pydantic

评论


答: 暂无答案