Skip to content

Commit 88e75d3

Browse files
sseliverstovGilBecker-Anaplan
authored andcommitted
fix duration for broken fixtures and improve pytest-rerunfailures - now reruns in report (fixes allure-framework#244 via allure-framework#357)
1 parent 855599d commit 88e75d3

3 files changed

Lines changed: 21 additions & 14 deletions

File tree

allure-pytest/src/listener.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,22 @@ def stop_fixture(self, parent_uuid, uuid, name, exc_type, exc_val, exc_tb):
5858
status=get_status(exc_val),
5959
statusDetails=get_status_details(exc_type, exc_val, exc_tb))
6060

61-
@pytest.hookimpl(hookwrapper=True)
62-
def pytest_runtest_setup(self, item):
61+
@pytest.hookimpl(hookwrapper=True, tryfirst=True)
62+
def pytest_runtest_protocol(self, item, nextitem):
6363
uuid = self._cache.push(item.nodeid)
64-
test_result = TestResult(name=item.name, uuid=uuid)
64+
test_result = TestResult(name=item.name, uuid=uuid, start=now(), stop=now())
6565
self.allure_logger.schedule_test(uuid, test_result)
66+
yield
67+
68+
@pytest.hookimpl(hookwrapper=True)
69+
def pytest_runtest_setup(self, item):
70+
if not self._cache.get(item.nodeid):
71+
uuid = self._cache.push(item.nodeid)
72+
test_result = TestResult(name=item.name, uuid=uuid, start=now(), stop=now())
73+
self.allure_logger.schedule_test(uuid, test_result)
6674

6775
yield
76+
6877
uuid = self._cache.get(item.nodeid)
6978
test_result = self.allure_logger.get_test(uuid)
7079
for fixturedef in _test_fixtures(item):
Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
11
import pytest
22
from hamcrest import assert_that
3-
from hamcrest import all_of
4-
from hamcrest import has_property, has_value
5-
from hamcrest import contains_string
63
from allure_commons_test.report import has_test_case
4+
from allure_commons_test.result import has_attachment
75

86

97
@pytest.mark.parametrize("param", ["first", "second"])
108
def test_parametrized_attachment(executed_docstring_source, param):
119
"""
1210
>>> import pytest
13-
>>> import allure
1411
1512
>>> @pytest.mark.parametrize("param", ["first", "second"])
1613
... def test_parametrized_attachment_example(param):
17-
... allure.attach(param)
14+
... assert param
1815
"""
1916

2017
assert_that(executed_docstring_source.allure_report,
21-
all_of(
22-
has_test_case("test_parametrized_attachment_example[{param}]".format(param=param)),
23-
has_property("attachments",
24-
has_value(contains_string(param))
25-
)
26-
))
18+
has_test_case("test_parametrized_attachment_example[{param}]".format(param=param),
19+
has_attachment()
20+
)
21+
)

allure-pytest/test/integration/pytest_rerunfailures/pytest_rerunfailures_test.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
import allure
12
import pytest
23
from hamcrest import assert_that
34
from allure_commons_test.report import has_test_case
45
from allure_commons_test.result import with_status
56

67

8+
@allure.issue("140")
9+
@allure.feature("Integration")
710
@pytest.mark.parametrize("countdown", [2, 4])
811
def test_pytest_rerunfailures(allured_testdir, countdown):
912
allured_testdir.testdir.makepyfile("""

0 commit comments

Comments
 (0)