Inline functin _find_step_function

This commit is contained in:
Alessio Bogon 2022-07-15 18:01:16 +02:00
parent e7c7f54089
commit 5c02da2ae7
1 changed files with 12 additions and 21 deletions

View File

@ -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)