diff --git a/allure-pytest/src/listener.py b/allure-pytest/src/listener.py index a61c7a31..08deb068 100644 --- a/allure-pytest/src/listener.py +++ b/allure-pytest/src/listener.py @@ -65,30 +65,27 @@ def pytest_runtest_protocol(self, item, nextitem): self.allure_logger.start_group(group_uuid, group) self.allure_logger.update_group(group_uuid, children=uuid) - test_case = TestResult(name=allure_name(item), uuid=uuid) - test_case.description = allure_description(item) - test_case.descriptionHtml = allure_description_html(item) + params = item.callspec.params if hasattr(item, 'callspec') else {} - self.allure_logger.schedule_test(uuid, test_case) - yield - - for name, value in item.callspec.params.items() if hasattr(item, 'callspec') else (): - test_result = self.allure_logger.get_test(uuid) - if test_result: - test_result.parameters.append(Parameter(name, represent(value))) + test_result = TestResult(name=allure_name(item, params), uuid=uuid) + test_result.description = allure_description(item) + test_result.descriptionHtml = allure_description_html(item) + test_result.fullName = allure_full_name(item) + test_result.historyId = md5(test_result.fullName) + test_result.parameters.extend([Parameter(name=name, value=represent(value)) for name, value in params.items()]) - test_case.labels.extend([Label(name=name, value=value) for name, value in allure_labels(item)]) - test_case.labels.extend([Label(name=LabelType.TAG, value=value) for value in pytest_markers(item)]) - test_case.labels.append(Label(name=LabelType.HOST, value=self._host)) - test_case.labels.append(Label(name=LabelType.THREAD, value=self._thread)) - test_case.labels.append(Label(name=LabelType.FRAMEWORK, value='pytest')) - test_case.labels.append(Label(name=LabelType.LANGUAGE, value=platform_label())) + self.allure_logger.schedule_test(uuid, test_result) - test_case.links += [Link(link_type, url, name) for link_type, url, name in allure_links(item)] + yield - test_case.fullName = allure_full_name(item) - test_case.historyId = md5(test_case.fullName) - test_case.labels.append(Label('package', allure_package(item))) + test_result.labels.extend([Label(name=name, value=value) for name, value in allure_labels(item)]) + test_result.labels.extend([Label(name=LabelType.TAG, value=value) for value in pytest_markers(item)]) + test_result.labels.append(Label(name=LabelType.HOST, value=self._host)) + test_result.labels.append(Label(name=LabelType.THREAD, value=self._thread)) + test_result.labels.append(Label(name=LabelType.FRAMEWORK, value='pytest')) + test_result.labels.append(Label(name=LabelType.LANGUAGE, value=platform_label())) + test_result.labels.append(Label(name='package', value=allure_package(item))) + test_result.links.extend([Link(link_type, url, name) for link_type, url, name in allure_links(item)]) uuid = self._cache.pop(item.nodeid) self.allure_logger.close_test(uuid) diff --git a/allure-pytest/src/utils.py b/allure-pytest/src/utils.py index c37a0654..99e5d6ef 100644 --- a/allure-pytest/src/utils.py +++ b/allure-pytest/src/utils.py @@ -84,10 +84,10 @@ def allure_package(item): return path.replace('/', '.') -def allure_name(item): +def allure_name(item, parameters): name = escape_name(item.name) title = allure_title(item) - return title if title else name + return title.format(**parameters) if title else name def allure_full_name(item): diff --git a/allure-pytest/test/title/__init__.py b/allure-pytest/test/display_name/__init__.py similarity index 100% rename from allure-pytest/test/title/__init__.py rename to allure-pytest/test/display_name/__init__.py diff --git a/allure-pytest/test/display_name/display_name_test.py b/allure-pytest/test/display_name/display_name_test.py new file mode 100644 index 00000000..d0853a89 --- /dev/null +++ b/allure-pytest/test/display_name/display_name_test.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +import pytest +import allure + + +@allure.title("A some test title") +def test_display_name(): + """ + >>> allure_report = getfixture('allure_report') + >>> assert_that(allure_report, + ... has_test_case('test_display_name', + ... has_title("A some test title") + ... ) + ... ) + """ + + +@allure.title("A some test title with param {param}") +@pytest.mark.parametrize('param', [False]) +def test_display_name_template(param): + """ + >>> allure_report = getfixture('allure_report') + >>> assert_that(allure_report, + ... has_test_case('test_display_name_template[False]', + ... has_title("A some test title with param False") + ... ) + ... ) + """ + assert param + + +@allure.title(u"Тест с шаблоном и параметром: {param}") +@pytest.mark.parametrize('param', [False]) +def test_unicode_display_name_template(param): + u""" + >>> allure_report = getfixture('allure_report') + >>> assert_that(allure_report, + ... has_test_case('test_unicode_display_name_template[False]', + ... has_title(u"Тест с шаблоном и параметром: False") + ... ) + ... ) + """ + assert param + + +@allure.title(u"Лунтик") +def test_unicode_display_name(): + u""" + >>> allure_report = getfixture('allure_report') + >>> assert_that(allure_report, + ... has_test_case('test_unicode_display_name', + ... has_title(u"Лунтик") + ... ) + ... ) + """ \ No newline at end of file diff --git a/allure-pytest/test/title/dynamic_test_title_test.py b/allure-pytest/test/display_name/dynamic_display_name_test.py similarity index 75% rename from allure-pytest/test/title/dynamic_test_title_test.py rename to allure-pytest/test/display_name/dynamic_display_name_test.py index bf1607ef..8975018c 100644 --- a/allure-pytest/test/title/dynamic_test_title_test.py +++ b/allure-pytest/test/display_name/dynamic_display_name_test.py @@ -2,11 +2,11 @@ @allure.title("A some test tile") -def test_dynamic_title(): +def test_dynamic_display_name(): """ >>> allure_report = getfixture('allure_report') >>> assert_that(allure_report, - ... has_test_case('test_dynamic_title', + ... has_test_case('test_dynamic_display_name', ... has_title("It is renamed test") ... ) ... ) diff --git a/allure-pytest/test/title/test_title_test.py b/allure-pytest/test/title/test_title_test.py deleted file mode 100644 index 2b2053a6..00000000 --- a/allure-pytest/test/title/test_title_test.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -import allure - - -@allure.title("A some test tile") -def test_title(): - """ - >>> allure_report = getfixture('allure_report') - >>> assert_that(allure_report, - ... has_test_case('test_title', - ... has_title("A some test tile") - ... ) - ... ) - """ - pass - - -@allure.title(u"Лунтик") -def test_unicode_title(): - u""" - >>> allure_report = getfixture('allure_report') - >>> assert_that(allure_report, - ... has_test_case('test_unicode_title', - ... has_title(u"Лунтик") - ... ) - ... ) - """ - pass \ No newline at end of file