gpt4 book ai didi

python - 在 Python 中模拟数据类时如何使用规范

转载 作者:行者123 更新时间:2023-12-03 22:15:06 25 4
gpt4 key购买 nike

我正在尝试使用 backport 包将我们的 namedtuple 类移植到 Python 3.6 中的数据类中。但是,我注意到在模拟数据类类时,您不能再使用“spec”关键字。我认为这是因为数据类代码是自动生成的。

from dataclasses import dataclass
import mock

@dataclass
class A:
aaa: str
bbb: int


m = mock.Mock(spec=A)

m.aaa

这是我得到的错误:
AttributeError: Mock object has no attribute 'aaa'

知道是否有任何方法可以将原始对象的所有属性自动设置为模拟对象?我有很多包含大量数据的数据类。如果我尝试一个一个地手动设置值,那将非常乏味。

最佳答案

我最终使用这个通用的辅助函数来实现规范对常规类的作用:

import mock
from dataclasses import fields


def create_dataclass_mock(obj):
return mock.Mock(spec=[field.name for field in fields(obj)])

关于python - 在 Python 中模拟数据类时如何使用规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51640505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com