diff --git a/allure-pytest/test/acceptance/label/bdd/bdd_label_test.py b/allure-pytest/test/acceptance/label/bdd/bdd_label_test.py index 28d72275..4bb4e2b1 100644 --- a/allure-pytest/test/acceptance/label/bdd/bdd_label_test.py +++ b/allure-pytest/test/acceptance/label/bdd/bdd_label_test.py @@ -1,6 +1,7 @@ """ ./examples/label/bdd/bdd_label.rst """ +import json -from hamcrest import assert_that +from hamcrest import assert_that, calling, is_not, raises from allure_commons_test.report import has_test_case from allure_commons_test.label import has_epic from allure_commons_test.label import has_feature @@ -29,3 +30,21 @@ def test_multiple_bdd_label(executed_docstring_path): has_story("Alternative story") ) ) + + +def test_set_bdd_label_as_object(executed_docstring_source): + """ + >>> import allure + + >>> class SomeClass: + ... pass + + >>> @allure.feature(SomeClass()) + ... def test_set_label_as_object_example(): + ... allure.dynamic.feature(SomeClass) + """ + + assert_that( + calling(json.dumps).with_args(executed_docstring_source.allure_report.test_cases), + is_not(raises(TypeError, 'not JSON serializable')) + ) diff --git a/allure-python-commons/src/_allure.py b/allure-python-commons/src/_allure.py index 5cc92966..1ea155ca 100644 --- a/allure-python-commons/src/_allure.py +++ b/allure-python-commons/src/_allure.py @@ -40,7 +40,7 @@ def epic(*epics): def feature(*features): - return label(LabelType.FEATURE, *features) + return label(LabelType.FEATURE, *[str(feature) for feature in features]) def story(*stories): @@ -103,7 +103,7 @@ def severity(severity_level): @staticmethod def feature(*features): - Dynamic.label(LabelType.FEATURE, *features) + Dynamic.label(LabelType.FEATURE, *[str(feature) for feature in features]) @staticmethod def story(*stories):