Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions allure-pytest-bdd/src/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ def get_allure_description(item, feature, scenario):
if value:
return value

feature_description = resolve_description(feature.description)
scenario_description = resolve_description(scenario.description)
feature_description = extract_description(feature)
scenario_description = extract_description(scenario)
return "\n\n".join(filter(None, [feature_description, scenario_description]))


Expand Down Expand Up @@ -146,7 +146,9 @@ def iter_pytest_tags(item):
yield LabelType.TAG, mark.name


def resolve_description(description):
def extract_description(obj):
description = getattr(obj, "description", None)

if isinstance(description, str):
return description

Expand Down
10 changes: 10 additions & 0 deletions tests/allure_pytest_bdd/acceptance/description_test.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import pytest
from hamcrest import assert_that
from hamcrest import equal_to

Expand All @@ -6,6 +7,7 @@
from allure_commons_test.result import has_description_html

from tests.allure_pytest.pytest_runner import AllurePytestRunner
from tests.e2e import version_lt


def test_description_decorator(allure_pytest_bdd_runner: AllurePytestRunner):
Expand Down Expand Up @@ -258,6 +260,10 @@ def given_noop():
)


@pytest.mark.skipif(
version_lt("pytest_bdd", 7),
reason="Pytest-BDD doesn't support scenario-level descriptions until v7",
)
def test_scenario_description(allure_pytest_bdd_runner: AllurePytestRunner):
feature_content = (
"""
Expand Down Expand Up @@ -341,6 +347,10 @@ def given_noop():
)


@pytest.mark.skipif(
version_lt("pytest_bdd", 7),
reason="Pytest-BDD doesn't support scenario-level descriptions until v7",
)
def test_feature_and_scenario_description(allure_pytest_bdd_runner: AllurePytestRunner):
feature_content = (
"""
Expand Down
10 changes: 9 additions & 1 deletion tests/allure_pytest_bdd/acceptance/title_test.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
from hamcrest import assert_that
from hamcrest import anything
from hamcrest import any_of

from allure_commons_test.report import has_test_case
from allure_commons_test.result import has_title
from allure_commons_test.result import has_step
from allure_commons_test.result import with_steps

from tests.allure_pytest.pytest_runner import AllurePytestRunner
from tests.e2e import version_gte


def test_title_decorator(allure_pytest_bdd_runner: AllurePytestRunner):
Expand Down Expand Up @@ -517,14 +519,20 @@ def then_pytest_param_used(bar):
steps_content,
)

# before pytest-bdd v6 parsed step args defined fixtures, which may conflict with target fixtures
step3_matcher = "Target Fixture" if version_gte("pytest_bdd", 6) else any_of(
"Target Fixture",
"Lorem Ipsum",
)

assert_that(
allure_results,
has_test_case(
"sample.feature:Bar",
with_steps(
anything(),
has_title("Lorem Ipsum"),
has_title("Target Fixture"),
has_title(step3_matcher),
has_title("Outline"),
has_title("Mark"),
),
Expand Down