|
27 | 27 |
|
28 | 28 | class AllureListener: |
29 | 29 |
|
| 30 | + SUITE_LABELS = { |
| 31 | + LabelType.PARENT_SUITE, |
| 32 | + LabelType.SUITE, |
| 33 | + LabelType.SUB_SUITE, |
| 34 | + } |
| 35 | + |
30 | 36 | def __init__(self, config): |
31 | 37 | self.config = config |
32 | 38 | self.allure_logger = AllureReporter() |
@@ -128,7 +134,7 @@ def pytest_runtest_teardown(self, item): |
128 | 134 | test_result = self.allure_logger.get_test(uuid) |
129 | 135 | test_result.labels.extend([Label(name=name, value=value) for name, value in allure_labels(item)]) |
130 | 136 | test_result.labels.extend([Label(name=LabelType.TAG, value=value) for value in pytest_markers(item)]) |
131 | | - test_result.labels.extend([Label(name=name, value=value) for name, value in allure_suite_labels(item)]) |
| 137 | + self.__apply_default_suites(item, test_result) |
132 | 138 | test_result.labels.append(Label(name=LabelType.HOST, value=self._host)) |
133 | 139 | test_result.labels.append(Label(name=LabelType.THREAD, value=self._thread)) |
134 | 140 | test_result.labels.append(Label(name=LabelType.FRAMEWORK, value='pytest')) |
@@ -284,6 +290,19 @@ def add_parameter(self, name, value, excluded, mode: ParameterMode): |
284 | 290 | test_result.parameters.append(Parameter(name=name, value=represent(value), |
285 | 291 | excluded=excluded or None, mode=mode.value if mode else None)) |
286 | 292 |
|
| 293 | + def __apply_default_suites(self, item, test_result): |
| 294 | + default_suites = allure_suite_labels(item) |
| 295 | + existing_suites = { |
| 296 | + label.name |
| 297 | + for label in test_result.labels |
| 298 | + if label.name in AllureListener.SUITE_LABELS |
| 299 | + } |
| 300 | + test_result.labels.extend( |
| 301 | + Label(name=name, value=value) |
| 302 | + for name, value in default_suites |
| 303 | + if name not in existing_suites |
| 304 | + ) |
| 305 | + |
287 | 306 |
|
288 | 307 | class ItemCache: |
289 | 308 |
|
|
0 commit comments