Skip to content

Commit 6e7fe49

Browse files
authored
Fix missing fixtures in report when using lazy_fixture (via #548)
1 parent 163f08c commit 6e7fe49

File tree

4 files changed

+59
-2
lines changed

4 files changed

+59
-2
lines changed

allure-pytest/src/listener.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,8 @@ def _test_fixtures(item):
279279
fixturemanager = item.session._fixturemanager
280280
fixturedefs = []
281281

282-
if hasattr(item, "fixturenames"):
283-
for name in item.fixturenames:
282+
if hasattr(item._request, "fixturenames"):
283+
for name in item._request.fixturenames:
284284
fixturedef = fixturemanager.getfixturedefs(name, item.nodeid)
285285
if fixturedef:
286286
fixturedefs.append(fixturedef[-1])

allure-pytest/test/integration/pytest_lazy_fixture/__init__.py

Whitespace-only changes.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import allure
2+
from hamcrest import assert_that
3+
from allure_commons_test.report import has_test_case
4+
from allure_commons_test.container import has_container
5+
from allure_commons_test.container import has_before
6+
7+
8+
@allure.feature("Integration")
9+
def test_lazy_fixture(executed_docstring_source):
10+
"""
11+
>>> import pytest
12+
... from pytest_lazyfixture import lazy_fixture
13+
14+
>>> @pytest.fixture
15+
... def my_lazy_fixture():
16+
... pass
17+
18+
>>> @pytest.mark.parametrize('param', [lazy_fixture('my_lazy_fixture')])
19+
... def test_lazy_fixture_example(param):
20+
... pass
21+
"""
22+
23+
assert_that(executed_docstring_source.allure_report,
24+
has_test_case("test_lazy_fixture_example",
25+
has_container(executed_docstring_source.allure_report,
26+
has_before("my_lazy_fixture")
27+
),
28+
)
29+
)
30+
31+
32+
@allure.feature("Integration")
33+
def test_nested_lazy_fixture(executed_docstring_source):
34+
"""
35+
>>> import pytest
36+
... from pytest_lazyfixture import lazy_fixture
37+
38+
>>> @pytest.fixture
39+
... def my_lazy_fixture():
40+
... pass
41+
42+
>>> @pytest.fixture(params=[lazy_fixture('my_lazy_fixture')])
43+
... def my_ordinary_fixture():
44+
... pass
45+
46+
>>> def test_nested_lazy_fixture_example(my_ordinary_fixture):
47+
... pass
48+
"""
49+
50+
assert_that(executed_docstring_source.allure_report,
51+
has_test_case("test_nested_lazy_fixture_example",
52+
has_container(executed_docstring_source.allure_report,
53+
has_before("my_lazy_fixture")
54+
),
55+
)
56+
)

allure-pytest/tox.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ deps =
3737
pytest-flakes
3838
pytest-rerunfailures
3939
pytest-xdist
40+
pytest-lazy-fixture
4041
mock
4142
{distshare}/allure-python-commons-2*.zip
4243
{distshare}/allure-python-commons-test-2*.zip

0 commit comments

Comments
 (0)