Skip to content

Commit a993658

Browse files
[3.7] Add test cases for dataclasses. (GH-17909) (GH-17920)
* Add test cases for dataclasses. * Add test for repr output of field. * Add test for ValueError to be raised when both default and default_factory are passed. (cherry picked from commit eef1b02) Co-authored-by: Karthikeyan Singaravelan <tir.karthi@gmail.com> Automerge-Triggered-By: @ericvsmith
1 parent 00ac28a commit a993658

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

Lib/test/test_dataclasses.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,25 @@ class C:
4545
o = C(42)
4646
self.assertEqual(o.x, 42)
4747

48+
def test_field_default_default_factory_error(self):
49+
msg = "cannot specify both default and default_factory"
50+
with self.assertRaisesRegex(ValueError, msg):
51+
@dataclass
52+
class C:
53+
x: int = field(default=1, default_factory=int)
54+
55+
def test_field_repr(self):
56+
int_field = field(default=1, init=True, repr=False)
57+
int_field.name = "id"
58+
repr_output = repr(int_field)
59+
expected_output = "Field(name='id',type=None," \
60+
f"default=1,default_factory={MISSING!r}," \
61+
"init=True,repr=False,hash=None," \
62+
"compare=True,metadata=mappingproxy({})," \
63+
"_field_type=None)"
64+
65+
self.assertEqual(repr_output, expected_output)
66+
4867
def test_named_init_params(self):
4968
@dataclass
5069
class C:

0 commit comments

Comments
 (0)