Skip to content

Commit b54580c

Browse files
authored
support template for display name (fixes allure-framework#196 via allure-framework#199)
1 parent 43cb1db commit b54580c

File tree

6 files changed

+76
-52
lines changed

6 files changed

+76
-52
lines changed

allure-pytest/src/listener.py

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -65,30 +65,27 @@ def pytest_runtest_protocol(self, item, nextitem):
6565
self.allure_logger.start_group(group_uuid, group)
6666
self.allure_logger.update_group(group_uuid, children=uuid)
6767

68-
test_case = TestResult(name=allure_name(item), uuid=uuid)
69-
test_case.description = allure_description(item)
70-
test_case.descriptionHtml = allure_description_html(item)
68+
params = item.callspec.params if hasattr(item, 'callspec') else {}
7169

72-
self.allure_logger.schedule_test(uuid, test_case)
73-
yield
74-
75-
for name, value in item.callspec.params.items() if hasattr(item, 'callspec') else ():
76-
test_result = self.allure_logger.get_test(uuid)
77-
if test_result:
78-
test_result.parameters.append(Parameter(name, represent(value)))
70+
test_result = TestResult(name=allure_name(item, params), uuid=uuid)
71+
test_result.description = allure_description(item)
72+
test_result.descriptionHtml = allure_description_html(item)
73+
test_result.fullName = allure_full_name(item)
74+
test_result.historyId = md5(test_result.fullName)
75+
test_result.parameters.extend([Parameter(name=name, value=represent(value)) for name, value in params.items()])
7976

80-
test_case.labels.extend([Label(name=name, value=value) for name, value in allure_labels(item)])
81-
test_case.labels.extend([Label(name=LabelType.TAG, value=value) for value in pytest_markers(item)])
82-
test_case.labels.append(Label(name=LabelType.HOST, value=self._host))
83-
test_case.labels.append(Label(name=LabelType.THREAD, value=self._thread))
84-
test_case.labels.append(Label(name=LabelType.FRAMEWORK, value='pytest'))
85-
test_case.labels.append(Label(name=LabelType.LANGUAGE, value=platform_label()))
77+
self.allure_logger.schedule_test(uuid, test_result)
8678

87-
test_case.links += [Link(link_type, url, name) for link_type, url, name in allure_links(item)]
79+
yield
8880

89-
test_case.fullName = allure_full_name(item)
90-
test_case.historyId = md5(test_case.fullName)
91-
test_case.labels.append(Label('package', allure_package(item)))
81+
test_result.labels.extend([Label(name=name, value=value) for name, value in allure_labels(item)])
82+
test_result.labels.extend([Label(name=LabelType.TAG, value=value) for value in pytest_markers(item)])
83+
test_result.labels.append(Label(name=LabelType.HOST, value=self._host))
84+
test_result.labels.append(Label(name=LabelType.THREAD, value=self._thread))
85+
test_result.labels.append(Label(name=LabelType.FRAMEWORK, value='pytest'))
86+
test_result.labels.append(Label(name=LabelType.LANGUAGE, value=platform_label()))
87+
test_result.labels.append(Label(name='package', value=allure_package(item)))
88+
test_result.links.extend([Link(link_type, url, name) for link_type, url, name in allure_links(item)])
9289

9390
uuid = self._cache.pop(item.nodeid)
9491
self.allure_logger.close_test(uuid)

allure-pytest/src/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,10 @@ def allure_package(item):
8484
return path.replace('/', '.')
8585

8686

87-
def allure_name(item):
87+
def allure_name(item, parameters):
8888
name = escape_name(item.name)
8989
title = allure_title(item)
90-
return title if title else name
90+
return title.format(**parameters) if title else name
9191

9292

9393
def allure_full_name(item):
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# -*- coding: utf-8 -*-
2+
import pytest
3+
import allure
4+
5+
6+
@allure.title("A some test title")
7+
def test_display_name():
8+
"""
9+
>>> allure_report = getfixture('allure_report')
10+
>>> assert_that(allure_report,
11+
... has_test_case('test_display_name',
12+
... has_title("A some test title")
13+
... )
14+
... )
15+
"""
16+
17+
18+
@allure.title("A some test title with param {param}")
19+
@pytest.mark.parametrize('param', [False])
20+
def test_display_name_template(param):
21+
"""
22+
>>> allure_report = getfixture('allure_report')
23+
>>> assert_that(allure_report,
24+
... has_test_case('test_display_name_template[False]',
25+
... has_title("A some test title with param False")
26+
... )
27+
... )
28+
"""
29+
assert param
30+
31+
32+
@allure.title(u"Тест с шаблоном и параметром: {param}")
33+
@pytest.mark.parametrize('param', [False])
34+
def test_unicode_display_name_template(param):
35+
u"""
36+
>>> allure_report = getfixture('allure_report')
37+
>>> assert_that(allure_report,
38+
... has_test_case('test_unicode_display_name_template[False]',
39+
... has_title(u"Тест с шаблоном и параметром: False")
40+
... )
41+
... )
42+
"""
43+
assert param
44+
45+
46+
@allure.title(u"Лунтик")
47+
def test_unicode_display_name():
48+
u"""
49+
>>> allure_report = getfixture('allure_report')
50+
>>> assert_that(allure_report,
51+
... has_test_case('test_unicode_display_name',
52+
... has_title(u"Лунтик")
53+
... )
54+
... )
55+
"""

allure-pytest/test/title/dynamic_test_title_test.py renamed to allure-pytest/test/display_name/dynamic_display_name_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33

44
@allure.title("A some test tile")
5-
def test_dynamic_title():
5+
def test_dynamic_display_name():
66
"""
77
>>> allure_report = getfixture('allure_report')
88
>>> assert_that(allure_report,
9-
... has_test_case('test_dynamic_title',
9+
... has_test_case('test_dynamic_display_name',
1010
... has_title("It is renamed test")
1111
... )
1212
... )

allure-pytest/test/title/test_title_test.py

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)