Python—如何重用具有有限字段数的数据类?
我有一个包含许多字段的数据类,我需要在测试中使用它。因此,我决定扩展该类,并使用测试所需的有限字段对其进行初始化。但这会在创建测试数据类时导致错误:Python—如何重用具有有限字段数的数据类?,python,python-3.x,unit-testing,testing,Python,Python 3.x,Unit Testing,Testing,我有一个包含许多字段的数据类,我需要在测试中使用它。因此,我决定扩展该类,并使用测试所需的有限字段对其进行初始化。但这会在创建测试数据类时导致错误: self.metrics_provider = TestMetricsProvider(data) E TypeError: __init__() missing 3 required positional arguments: 'class_name', 'type', and 'score' 基本数据类: @dataclass c
self.metrics_provider = TestMetricsProvider(data)
E TypeError: __init__() missing 3 required positional arguments: 'class_name', 'type', and 'score'
基本数据类:
@dataclass
class MetricsProvider:
name: str
class_name: str
type: str
score: str
source: str
location: str = DEFAULT_LOCATION
algorithm: Optional[str] = None
@dataclass
class TestMetricsProvider(MetricsProvider):
pass
data = dict(
name="test",
class_name="test_class",
type="test_type"
score="test_score",
source="test_source")
class TestMetrics(unittest.TestCase):
def setUp(self) -> None:
self.metrics_provider = TestMetricsProvider(data)
测试中的数据类:
@dataclass
class MetricsProvider:
name: str
class_name: str
type: str
score: str
source: str
location: str = DEFAULT_LOCATION
algorithm: Optional[str] = None
@dataclass
class TestMetricsProvider(MetricsProvider):
pass
data = dict(
name="test",
class_name="test_class",
type="test_type"
score="test_score",
source="test_source")
class TestMetrics(unittest.TestCase):
def setUp(self) -> None:
self.metrics_provider = TestMetricsProvider(data)
如下所示定义测试数据类导致错误:E TypeError:\uuuu init\uuuuu()接受1个位置参数,但给出了2个
@dataclass
class TestMetricsProvider(MetricsProvider):
def __init__(self):
super().__init__()
在这种情况下,我应该如何正确地创建它?或者,它可能会被嘲笑?将您的值字典作为关键字参数传递(又称kwargs):
类TestMetrics(unittest.TestCase):
def设置(自身)->无:
self.metrics\u provider=TestMetricsProvider(**数据)
数据类的构造函数期望字段的实际值作为关键字参数。使用
TestMetricsProvider(数据)
时,将data
字典作为第一个字段name
的值传递,使其与TestMetricsProvider(name=data)
类似,谢谢!成功了。离开TestMetricsProvider而不使用init方法是否正确,只需使用pass
?@samba是的,您不需要重写\uuuu init\uu
方法。