forked from test_framework/pytest-bdd
Inline functin _find_step_function
This commit is contained in:
parent
e7c7f54089
commit
5c02da2ae7
|
@ -12,17 +12,16 @@ test_publish_article = scenario(
|
|||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import collections
|
||||
import os
|
||||
import re
|
||||
from typing import TYPE_CHECKING, Callable, cast
|
||||
|
||||
import pytest
|
||||
from _pytest.fixtures import FixtureLookupError, FixtureManager, FixtureRequest, call_fixture_func
|
||||
from _pytest.fixtures import FixtureManager, FixtureRequest, call_fixture_func
|
||||
|
||||
from . import exceptions
|
||||
from .feature import get_feature, get_features
|
||||
from .steps import StepFunctionContext, get_step_fixture_name, inject_fixture
|
||||
from .steps import StepFunctionContext, inject_fixture
|
||||
from .utils import CONFIG_STACK, get_args, get_caller_module_locals, get_caller_module_path
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
@ -54,18 +53,6 @@ def find_argumented_step_function(name: str, type_: str, fixturemanager: Fixture
|
|||
return None
|
||||
|
||||
|
||||
def _find_step_function(request: FixtureRequest, step: Step, scenario: Scenario) -> StepFunctionContext:
|
||||
"""Match the step defined by the parser."""
|
||||
# Could not find a fixture with the same name, let's see if there is a parser involved
|
||||
step_func_context = find_argumented_step_function(step.name, step.type, request._fixturemanager)
|
||||
if step_func_context is None:
|
||||
raise exceptions.StepDefinitionNotFoundError(
|
||||
f"Step definition is not found: {step}. "
|
||||
f'Line {step.line_number} in scenario "{scenario.name}" in the feature "{scenario.feature.filename}"'
|
||||
)
|
||||
return step_func_context
|
||||
|
||||
|
||||
def _execute_step_function(
|
||||
request: FixtureRequest, scenario: Scenario, step: Step, context: StepFunctionContext
|
||||
) -> None:
|
||||
|
@ -120,13 +107,17 @@ def _execute_scenario(feature: Feature, scenario: Scenario, request: FixtureRequ
|
|||
request.config.hook.pytest_bdd_before_scenario(request=request, feature=feature, scenario=scenario)
|
||||
|
||||
for step in scenario.steps:
|
||||
try:
|
||||
step_func_context = _find_step_function(request, step, scenario)
|
||||
except exceptions.StepDefinitionNotFoundError as exception:
|
||||
request.config.hook.pytest_bdd_step_func_lookup_error(
|
||||
request=request, feature=feature, scenario=scenario, step=step, exception=exception
|
||||
context = find_argumented_step_function(step.name, step.type, request._fixturemanager)
|
||||
if context is None:
|
||||
exc = exceptions.StepDefinitionNotFoundError(
|
||||
f"Step definition is not found: {step}. "
|
||||
f'Line {step.line_number} in scenario "{scenario.name}" in the feature "{scenario.feature.filename}"'
|
||||
)
|
||||
raise
|
||||
request.config.hook.pytest_bdd_step_func_lookup_error(
|
||||
request=request, feature=feature, scenario=scenario, step=step, exception=exc
|
||||
)
|
||||
raise exc
|
||||
step_func_context = context
|
||||
|
||||
try:
|
||||
_execute_step_function(request, scenario, step, step_func_context)
|
||||
|
|
Loading…
Reference in New Issue