Skip to content

Commit d7835e5

Browse files
authored
Merge pull request #557 from glehmann/tracebackhide
hide pytest-bdd internal method in user tracebacks
2 parents f686505 + 64e2086 commit d7835e5

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

src/pytest_bdd/feature.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def get_feature(base_path: str, filename: str, encoding: str = "utf-8") -> Featu
4848
stored in the global variable cache to improve the performance
4949
when multiple scenarios are referencing the same file.
5050
"""
51-
51+
__tracebackhide__ = True
5252
full_name = os.path.abspath(os.path.join(base_path, filename))
5353
feature = features.get(full_name)
5454
if not feature:

src/pytest_bdd/parser.py

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ def parse_feature(basedir: str, filename: str, encoding: str = "utf-8") -> Featu
8888
:param str filename: Relative path to the feature file.
8989
:param str encoding: Feature file encoding (utf-8 by default).
9090
"""
91+
__tracebackhide__ = True
9192
abs_filename = os.path.abspath(os.path.join(basedir, filename))
9293
rel_filename = os.path.join(os.path.basename(basedir), filename)
9394
feature = Feature(

src/pytest_bdd/scenario.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ def get_step_function(request, step: Step) -> StepFunctionContext | None:
110110
111111
Finally we let request.getfixturevalue(...) fetch the step definition fixture.
112112
"""
113+
__tracebackhide__ = True
113114
bdd_name = get_step_fixture_name(step=step)
114115

115116
with inject_fixturedefs_for_step(step=step, fixturemanager=request._fixturemanager, nodeid=request.node.nodeid):
@@ -123,6 +124,7 @@ def _execute_step_function(
123124
request: FixtureRequest, scenario: Scenario, step: Step, context: StepFunctionContext
124125
) -> None:
125126
"""Execute step function."""
127+
__tracebackhide__ = True
126128
kw = {
127129
"request": request,
128130
"feature": scenario.feature,
@@ -173,6 +175,7 @@ def _execute_scenario(feature: Feature, scenario: Scenario, request: FixtureRequ
173175
:param request: request.
174176
:param encoding: Encoding.
175177
"""
178+
__tracebackhide__ = True
176179
request.config.hook.pytest_bdd_before_scenario(request=request, feature=feature, scenario=scenario)
177180

178181
for step in scenario.steps:
@@ -214,6 +217,7 @@ def decorator(*args: Callable) -> Callable:
214217
# otherwise indirect fixtures would not work.
215218
@pytest.mark.usefixtures(*func_args)
216219
def scenario_wrapper(request: FixtureRequest, _pytest_bdd_example: dict[str, str]) -> Any:
220+
__tracebackhide__ = True
217221
scenario = templated_scenario.render(_pytest_bdd_example)
218222
_execute_scenario(feature, scenario, request)
219223
fixture_values = [request.getfixturevalue(arg) for arg in func_args]
@@ -259,7 +263,7 @@ def scenario(
259263
:param str scenario_name: Scenario name.
260264
:param str encoding: Feature file encoding.
261265
"""
262-
266+
__tracebackhide__ = True
263267
scenario_name = str(scenario_name)
264268
caller_module_path = get_caller_module_path()
265269

0 commit comments

Comments
 (0)