Skip to content

Commit ce3c6ae

Browse files
committed
feat(commons): data models type annotations
- Corrected `TestResult` to initialise with required UUID - Updated `ParameterMode.DEFAULT` from `None` to `"default"` - Updated `ALLURE_UNIQUE_LABELS` to use `LabelType` values
1 parent 63017ae commit ce3c6ae

File tree

3 files changed

+54
-53
lines changed

3 files changed

+54
-53
lines changed

allure-python-commons/src/allure_commons/lifecycle.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ def _last_item_uuid(self, item_type=None):
3535

3636
@contextmanager
3737
def schedule_test_case(self, uuid=None):
38-
test_result = TestResult()
39-
test_result.uuid = uuid or uuid4()
38+
test_result = TestResult(uuid=uuid or uuid4())
4039
self._items[test_result.uuid] = test_result
4140
yield test_result
4241

allure-python-commons/src/allure_commons/model2.py

Lines changed: 47 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
from __future__ import annotations
2+
13
from attr import attrs, attrib
24
from attr import Factory
35

4-
56
TEST_GROUP_PATTERN = "{prefix}-container.json"
67
TEST_CASE_PATTERN = "{prefix}-result.json"
78
ATTACHMENT_PATTERN = "{prefix}-attachment.{ext}"
@@ -12,49 +13,49 @@
1213
class TestResultContainer:
1314
file_pattern = TEST_GROUP_PATTERN
1415

15-
uuid = attrib(default=None)
16-
name = attrib(default=None)
17-
children = attrib(default=Factory(list))
18-
description = attrib(default=None)
19-
descriptionHtml = attrib(default=None)
20-
befores = attrib(default=Factory(list))
21-
afters = attrib(default=Factory(list))
22-
links = attrib(default=Factory(list))
23-
start = attrib(default=None)
24-
stop = attrib(default=None)
16+
uuid: str = attrib(default=None)
17+
name: str | None = attrib(default=None)
18+
children: list[str] = attrib(default=Factory(list))
19+
description: str | None = attrib(default=None)
20+
descriptionHtml: str | None = attrib(default=None)
21+
befores: list[TestBeforeResult] = attrib(default=Factory(list))
22+
afters: list[TestAfterResult] = attrib(default=Factory(list))
23+
links: list[Link] = attrib(default=Factory(list))
24+
start: int | None = attrib(default=None)
25+
stop: int | None = attrib(default=None)
2526

2627

2728
@attrs
2829
class ExecutableItem:
29-
name = attrib(default=None)
30-
status = attrib(default=None)
31-
statusDetails = attrib(default=None)
32-
stage = attrib(default=None)
33-
description = attrib(default=None)
34-
descriptionHtml = attrib(default=None)
35-
steps = attrib(default=Factory(list))
36-
attachments = attrib(default=Factory(list))
37-
parameters = attrib(default=Factory(list))
38-
start = attrib(default=None)
39-
stop = attrib(default=None)
30+
name: str | None = attrib(default=None)
31+
status: str | None = attrib(default=None)
32+
statusDetails: StatusDetails | None = attrib(default=None)
33+
stage: str | None = attrib(default=None)
34+
description: str | None = attrib(default=None)
35+
descriptionHtml: str | None = attrib(default=None)
36+
steps: list[TestStepResult] = attrib(default=Factory(list))
37+
attachments: list[Attachment] = attrib(default=Factory(list))
38+
parameters: list[Parameter] = attrib(default=Factory(list))
39+
start: int | None = attrib(default=None)
40+
stop: int | None = attrib(default=None)
4041

4142

4243
@attrs
4344
class TestResult(ExecutableItem):
4445
file_pattern = TEST_CASE_PATTERN
4546

46-
uuid = attrib(default=None)
47-
historyId = attrib(default=None)
48-
testCaseId = attrib(default=None)
49-
fullName = attrib(default=None)
50-
labels = attrib(default=Factory(list))
51-
links = attrib(default=Factory(list))
52-
titlePath = attrib(default=Factory(list))
47+
uuid: str = attrib(default=None)
48+
historyId: str | None = attrib(default=None)
49+
testCaseId: str | None = attrib(default=None)
50+
fullName: str | None = attrib(default=None)
51+
labels: list[Label] = attrib(default=Factory(list))
52+
links: list[Link] = attrib(default=Factory(list))
53+
titlePath: list[str] = attrib(default=Factory(list))
5354

5455

5556
@attrs
5657
class TestStepResult(ExecutableItem):
57-
id = attrib(default=None)
58+
id: str | None = attrib(default=None)
5859

5960

6061
@attrs
@@ -69,37 +70,37 @@ class TestAfterResult(ExecutableItem):
6970

7071
@attrs
7172
class Parameter:
72-
name = attrib(default=None)
73-
value = attrib(default=None)
74-
excluded = attrib(default=None)
75-
mode = attrib(default=None)
73+
name: str = attrib(default=None)
74+
value: str = attrib(default=None)
75+
excluded: bool | None = attrib(default=None)
76+
mode: str | None = attrib(default=None)
7677

7778

7879
@attrs
7980
class Label:
80-
name = attrib(default=None)
81-
value = attrib(default=None)
81+
name: str = attrib(default=None)
82+
value: str = attrib(default=None)
8283

8384

8485
@attrs
8586
class Link:
86-
type = attrib(default=None)
87-
url = attrib(default=None)
88-
name = attrib(default=None)
87+
type: str | None = attrib(default=None)
88+
url: str = attrib(default=None)
89+
name: str | None = attrib(default=None)
8990

9091

9192
@attrs
9293
class StatusDetails:
93-
known = attrib(default=None)
94-
flaky = attrib(default=None)
95-
message = attrib(default=None)
96-
trace = attrib(default=None)
94+
known: bool | None = attrib(default=None)
95+
flaky: bool | None = attrib(default=None)
96+
message: str | None = attrib(default=None)
97+
trace: str | None = attrib(default=None)
9798

9899
@attrs
99100
class Attachment:
100-
name = attrib(default=None)
101-
source = attrib(default=None)
102-
type = attrib(default=None)
101+
name: str = attrib(default=None)
102+
source: str = attrib(default=None)
103+
type: str | None = attrib(default=None)
103104

104105

105106
class Status:

allure-python-commons/src/allure_commons/types.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
from enum import Enum
22

3-
ALLURE_UNIQUE_LABELS = ["severity", "thread", "host"]
4-
53

64
class Severity(str, Enum):
75
BLOCKER = "blocker"
@@ -34,9 +32,12 @@ class LabelType(str):
3432
MANUAL = "ALLURE_MANUAL"
3533

3634

35+
ALLURE_UNIQUE_LABELS = [LabelType.SEVERITY, LabelType.THREAD, LabelType.HOST]
36+
37+
3738
class AttachmentType(Enum):
3839

39-
def __init__(self, mime_type, extension):
40+
def __init__(self, mime_type: str, extension: str) -> None:
4041
self.mime_type = mime_type
4142
self.extension = extension
4243

@@ -66,7 +67,7 @@ def __init__(self, mime_type, extension):
6667
PDF = ("application/pdf", "pdf")
6768

6869

69-
class ParameterMode(Enum):
70+
class ParameterMode(str, Enum):
7071
HIDDEN = "hidden"
7172
MASKED = "masked"
72-
DEFAULT = None
73+
DEFAULT = "default"

0 commit comments

Comments
 (0)