From 258a7d12505278fd4822e296283ea37f4ae78e51 Mon Sep 17 00:00:00 2001 From: kirikami Date: Mon, 15 Jun 2020 17:07:52 +0900 Subject: [PATCH 1/6] Added parametrized dynamic links to use like @allure.link('{test.link}' --- allure-pytest/src/listener.py | 3 ++- allure-pytest/src/utils.py | 4 ++-- .../test/acceptance/link/dynamic_link_test.py | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/allure-pytest/src/listener.py b/allure-pytest/src/listener.py index c9ff8049..e7365a6e 100644 --- a/allure-pytest/src/listener.py +++ b/allure-pytest/src/listener.py @@ -110,6 +110,7 @@ def pytest_runtest_teardown(self, item): yield uuid = self._cache.get(item.nodeid) test_result = self.allure_logger.get_test(uuid) + params = item.callspec.params if hasattr(item, 'callspec') else {} 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.extend([Label(name=name, value=value) for name, value in allure_suite_labels(item)]) @@ -118,7 +119,7 @@ def pytest_runtest_teardown(self, item): 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)]) + test_result.links.extend([Link(link_type, url, name) for link_type, url, name in allure_links(item, params)]) @pytest.hookimpl(hookwrapper=True) def pytest_fixture_setup(self, fixturedef, request): diff --git a/allure-pytest/src/utils.py b/allure-pytest/src/utils.py index 5153b6e1..05ee4307 100644 --- a/allure-pytest/src/utils.py +++ b/allure-pytest/src/utils.py @@ -71,9 +71,9 @@ def allure_labels(item): return labels -def allure_links(item): +def allure_links(item, parameters): for mark in item.iter_markers(name=ALLURE_LINK_MARK): - yield (mark.kwargs["link_type"], mark.args[0], mark.kwargs["name"]) + yield (mark.kwargs["link_type"], mark.args[0].format(**parameters), mark.kwargs["name"].format(**parameters)) def pytest_markers(item): diff --git a/allure-pytest/test/acceptance/link/dynamic_link_test.py b/allure-pytest/test/acceptance/link/dynamic_link_test.py index 2741b58c..fae9a904 100644 --- a/allure-pytest/test/acceptance/link/dynamic_link_test.py +++ b/allure-pytest/test/acceptance/link/dynamic_link_test.py @@ -44,3 +44,23 @@ def test_unique_dynamic_links(executed_docstring_source): """ assert_that(executed_docstring_source.allure_report.test_cases[0]['links'], equal_to([{'url': u'some/unique/dynamic/link', 'type': 'link', 'name': u'some/unique/dynamic/link'}])) + + +def test_parametrize_link(executed_docstring_path): + """ + >>> test_case = [{'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/24'}, + >>> {'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/132'}] + >>> import allure + >>> @allure.link({'link.test_id}') + >>> @pytest.mark.parametrize("link", test_case) + >>> def test_parametrized_dynamic_links(link): + ... pass + """ + test_case = [{'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/24'}, + {'test_name': 'Parametrized dynamic link2', 'test_id': 'issues/132'}] + for test in test_case: + assert_that(executed_docstring_path.allure_report, + has_test_case("test_parametrized_dynamic_links[{link}]".format(link=test['test_id']), + has_issue_link(test['test_id']), + ) + ) From 313b66eb705493f7aa6f7600bdb16d831e04937b Mon Sep 17 00:00:00 2001 From: kirikami Date: Mon, 15 Jun 2020 18:01:18 +0900 Subject: [PATCH 2/6] Trying to fix test --- allure-pytest/test/acceptance/link/dynamic_link_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/allure-pytest/test/acceptance/link/dynamic_link_test.py b/allure-pytest/test/acceptance/link/dynamic_link_test.py index fae9a904..643cf1cb 100644 --- a/allure-pytest/test/acceptance/link/dynamic_link_test.py +++ b/allure-pytest/test/acceptance/link/dynamic_link_test.py @@ -46,7 +46,7 @@ def test_unique_dynamic_links(executed_docstring_source): equal_to([{'url': u'some/unique/dynamic/link', 'type': 'link', 'name': u'some/unique/dynamic/link'}])) -def test_parametrize_link(executed_docstring_path): +def test_parametrize_link(executed_docstring_source): """ >>> test_case = [{'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/24'}, >>> {'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/132'}] @@ -59,7 +59,7 @@ def test_parametrize_link(executed_docstring_path): test_case = [{'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/24'}, {'test_name': 'Parametrized dynamic link2', 'test_id': 'issues/132'}] for test in test_case: - assert_that(executed_docstring_path.allure_report, + assert_that(executed_docstring_source.allure_report, has_test_case("test_parametrized_dynamic_links[{link}]".format(link=test['test_id']), has_issue_link(test['test_id']), ) From 534fd54a0ad9625d84e5c11b80cdda9dfee0b557 Mon Sep 17 00:00:00 2001 From: kirikami Date: Mon, 15 Jun 2020 23:27:08 +0900 Subject: [PATCH 3/6] Added test cases for links in parameters --- allure-pytest/examples/link/link.rst | 11 ++++++++++ .../test/acceptance/link/dynamic_link_test.py | 19 ----------------- .../test/acceptance/link/link_test.py | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/allure-pytest/examples/link/link.rst b/allure-pytest/examples/link/link.rst index 713dcc47..1f26990d 100644 --- a/allure-pytest/examples/link/link.rst +++ b/allure-pytest/examples/link/link.rst @@ -2,6 +2,7 @@ Links ----- >>> import allure + >>> import pytest >>> @allure.link("http://qameta.io") >>> def test_link(): @@ -22,3 +23,13 @@ Links ... def test_custom_link(): ... pass + >>> @allure.link("{link}") + >>> @pytest.mark.parametrize("test, link", [(True, 'link/666'), (False, 'link/777')]) + >>> def test_parametrize_link(test, link): + ... assert test + + >>> @allure.issue("{issue}") + >>> @allure.testcase("{testcase}") + >>> @pytest.mark.parametrize("test, issue, testcase", [(True, 'issues/666', 'testcase/666'), (False, 'issues/777', 'testcase/777')]) + >>> def test_parametrize_link_multiple(test, issue, testcase): + ... assert test \ No newline at end of file diff --git a/allure-pytest/test/acceptance/link/dynamic_link_test.py b/allure-pytest/test/acceptance/link/dynamic_link_test.py index 643cf1cb..1b28b2b0 100644 --- a/allure-pytest/test/acceptance/link/dynamic_link_test.py +++ b/allure-pytest/test/acceptance/link/dynamic_link_test.py @@ -45,22 +45,3 @@ def test_unique_dynamic_links(executed_docstring_source): assert_that(executed_docstring_source.allure_report.test_cases[0]['links'], equal_to([{'url': u'some/unique/dynamic/link', 'type': 'link', 'name': u'some/unique/dynamic/link'}])) - -def test_parametrize_link(executed_docstring_source): - """ - >>> test_case = [{'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/24'}, - >>> {'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/132'}] - >>> import allure - >>> @allure.link({'link.test_id}') - >>> @pytest.mark.parametrize("link", test_case) - >>> def test_parametrized_dynamic_links(link): - ... pass - """ - test_case = [{'test_name': 'Parametrized dynamic link1', 'test_id': 'issues/24'}, - {'test_name': 'Parametrized dynamic link2', 'test_id': 'issues/132'}] - for test in test_case: - assert_that(executed_docstring_source.allure_report, - has_test_case("test_parametrized_dynamic_links[{link}]".format(link=test['test_id']), - has_issue_link(test['test_id']), - ) - ) diff --git a/allure-pytest/test/acceptance/link/link_test.py b/allure-pytest/test/acceptance/link/link_test.py index 24f6868a..97713e6d 100644 --- a/allure-pytest/test/acceptance/link/link_test.py +++ b/allure-pytest/test/acceptance/link/link_test.py @@ -37,3 +37,24 @@ def test_custom_link(executed_docstring_path): has_link("http://qameta.io", name="QAMETA", link_type="homepage") ) ) + + +def test_parametrize_link(executed_docstring_path): + testcases = [{'url': 'link/666'}, {'url': 'link/777'}] + for test in testcases: + assert_that(executed_docstring_path.allure_report, + has_test_case("test_parametrize_link", + has_link(test['url']), + ) + ) + + +def test_parametrize_link_multiple(executed_docstring_path): + testcases = [{'issue': 'issues/666', 'testcase': 'testcase/666'}, {'issue': 'issues/777', 'testcase': 'testcase/777'}] + for test in testcases: + assert_that(executed_docstring_path.allure_report, + has_test_case("test_parametrize_link_multiple", + has_issue_link(test['issue']), + has_test_case_link(test['testcase']) + ) + ) From 3a64d19ca0eb70bb9ac62e4d85412cf6b75ed32a Mon Sep 17 00:00:00 2001 From: kirikami Date: Mon, 15 Jun 2020 23:36:10 +0900 Subject: [PATCH 4/6] Fixed static errors --- allure-pytest/test/acceptance/link/dynamic_link_test.py | 1 - allure-pytest/test/acceptance/link/link_test.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/allure-pytest/test/acceptance/link/dynamic_link_test.py b/allure-pytest/test/acceptance/link/dynamic_link_test.py index 1b28b2b0..2741b58c 100644 --- a/allure-pytest/test/acceptance/link/dynamic_link_test.py +++ b/allure-pytest/test/acceptance/link/dynamic_link_test.py @@ -44,4 +44,3 @@ def test_unique_dynamic_links(executed_docstring_source): """ assert_that(executed_docstring_source.allure_report.test_cases[0]['links'], equal_to([{'url': u'some/unique/dynamic/link', 'type': 'link', 'name': u'some/unique/dynamic/link'}])) - diff --git a/allure-pytest/test/acceptance/link/link_test.py b/allure-pytest/test/acceptance/link/link_test.py index 97713e6d..a3207371 100644 --- a/allure-pytest/test/acceptance/link/link_test.py +++ b/allure-pytest/test/acceptance/link/link_test.py @@ -50,7 +50,8 @@ def test_parametrize_link(executed_docstring_path): def test_parametrize_link_multiple(executed_docstring_path): - testcases = [{'issue': 'issues/666', 'testcase': 'testcase/666'}, {'issue': 'issues/777', 'testcase': 'testcase/777'}] + testcases = [{'issue': 'issues/666', 'testcase': 'testcase/666'}, + {'issue': 'issues/777', 'testcase': 'testcase/777'}] for test in testcases: assert_that(executed_docstring_path.allure_report, has_test_case("test_parametrize_link_multiple", From 735947fd0973c8c71bb0dc6dc3eec325edec4acf Mon Sep 17 00:00:00 2001 From: kirikami Date: Tue, 16 Jun 2020 00:00:42 +0900 Subject: [PATCH 5/6] Minor update in examples for links --- allure-pytest/examples/link/link.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/allure-pytest/examples/link/link.rst b/allure-pytest/examples/link/link.rst index 1f26990d..d1e70d0e 100644 --- a/allure-pytest/examples/link/link.rst +++ b/allure-pytest/examples/link/link.rst @@ -2,7 +2,6 @@ Links ----- >>> import allure - >>> import pytest >>> @allure.link("http://qameta.io") >>> def test_link(): @@ -23,6 +22,7 @@ Links ... def test_custom_link(): ... pass + >>> import pytest >>> @allure.link("{link}") >>> @pytest.mark.parametrize("test, link", [(True, 'link/666'), (False, 'link/777')]) >>> def test_parametrize_link(test, link): From 85324c8b7b3777c315323fef21792780ee5cbba4 Mon Sep 17 00:00:00 2001 From: kirikami Date: Wed, 17 Jun 2020 09:01:36 +0900 Subject: [PATCH 6/6] Triggering build --- allure-pytest/test/acceptance/link/link_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/allure-pytest/test/acceptance/link/link_test.py b/allure-pytest/test/acceptance/link/link_test.py index a3207371..3e616f2e 100644 --- a/allure-pytest/test/acceptance/link/link_test.py +++ b/allure-pytest/test/acceptance/link/link_test.py @@ -52,6 +52,7 @@ def test_parametrize_link(executed_docstring_path): def test_parametrize_link_multiple(executed_docstring_path): testcases = [{'issue': 'issues/666', 'testcase': 'testcase/666'}, {'issue': 'issues/777', 'testcase': 'testcase/777'}] + for test in testcases: assert_that(executed_docstring_path.allure_report, has_test_case("test_parametrize_link_multiple",