diff --git a/allure-pytest/src/listener.py b/allure-pytest/src/listener.py index 70b1e55c..4a47208a 100644 --- a/allure-pytest/src/listener.py +++ b/allure-pytest/src/listener.py @@ -261,6 +261,15 @@ def add_label(self, label_type, labels): for label in labels if test_result else (): test_result.labels.append(Label(label_type, label)) + @allure_commons.hookimpl + def remove_label(self, label_types): + test_result = self.allure_logger.get_test(None) + if test_result: + labels_to_keep = list() + for labels_in_test in test_result.labels: + if labels_in_test.name not in label_types: + labels_to_keep.append(labels_in_test) + test_result.labels = labels_to_keep class ItemCache(object): diff --git a/allure-python-commons/src/_allure.py b/allure-python-commons/src/_allure.py index 565ac955..bd039118 100644 --- a/allure-python-commons/src/_allure.py +++ b/allure-python-commons/src/_allure.py @@ -100,6 +100,10 @@ def description_html(test_description_html): def label(label_type, *labels): plugin_manager.hook.add_label(label_type=label_type, labels=labels) + @staticmethod + def del_label(*label_types): + plugin_manager.hook.remove_label(label_types=label_types) + @staticmethod def severity(severity_level): Dynamic.label(LabelType.SEVERITY, severity_level) @@ -108,6 +112,10 @@ def severity(severity_level): def feature(*features): Dynamic.label(LabelType.FEATURE, *features) + @staticmethod + def remove_feature(): + Dynamic.del_label(LabelType.FEATURE) + @staticmethod def story(*stories): Dynamic.label(LabelType.STORY, *stories) diff --git a/allure-python-commons/src/_hooks.py b/allure-python-commons/src/_hooks.py index 724c3e01..11233dab 100644 --- a/allure-python-commons/src/_hooks.py +++ b/allure-python-commons/src/_hooks.py @@ -38,6 +38,10 @@ def decorate_as_label(self, label_type, labels): def add_label(self, label_type, labels): """ label """ + @hookspec + def remove_label(self, label_type, labels): + """ label """ + @hookspec def decorate_as_link(self, url, link_type, name): """ url """