15
15
import re
16
16
17
17
import pytest
18
-
19
- try :
20
- from _pytest import fixtures as pytest_fixtures
21
- except ImportError :
22
- from _pytest import python as pytest_fixtures
18
+ from _pytest .fixtures import FixtureLookupError
23
19
24
20
from . import exceptions
25
21
from .feature import get_feature , get_features
@@ -36,21 +32,25 @@ def find_argumented_step_fixture_name(name, type_, fixturemanager, request=None)
36
32
for fixturename , fixturedefs in list (fixturemanager ._arg2fixturedefs .items ()):
37
33
for fixturedef in fixturedefs :
38
34
parser = getattr (fixturedef .func , "parser" , None )
39
- match = parser .is_matching (name ) if parser else None
40
- if match :
41
- converters = getattr (fixturedef .func , "converters" , {})
42
- for arg , value in parser .parse_arguments (name ).items ():
43
- if arg in converters :
44
- value = converters [arg ](value )
45
- if request :
46
- inject_fixture (request , arg , value )
47
- parser_name = get_step_fixture_name (parser .name , type_ )
35
+ if parser is None :
36
+ continue
37
+ match = parser .is_matching (name )
38
+ if not match :
39
+ continue
40
+
41
+ converters = getattr (fixturedef .func , "converters" , {})
42
+ for arg , value in parser .parse_arguments (name ).items ():
43
+ if arg in converters :
44
+ value = converters [arg ](value )
48
45
if request :
49
- try :
50
- request .getfixturevalue (parser_name )
51
- except pytest_fixtures .FixtureLookupError :
52
- continue
53
- return parser_name
46
+ inject_fixture (request , arg , value )
47
+ parser_name = get_step_fixture_name (parser .name , type_ )
48
+ if request :
49
+ try :
50
+ request .getfixturevalue (parser_name )
51
+ except FixtureLookupError :
52
+ continue
53
+ return parser_name
54
54
55
55
56
56
def _find_step_function (request , step , scenario ):
@@ -67,14 +67,14 @@ def _find_step_function(request, step, scenario):
67
67
try :
68
68
# Simple case where no parser is used for the step
69
69
return request .getfixturevalue (get_step_fixture_name (name , step .type ))
70
- except pytest_fixtures . FixtureLookupError :
70
+ except FixtureLookupError :
71
71
try :
72
72
# Could not find a fixture with the same name, let's see if there is a parser involved
73
73
name = find_argumented_step_fixture_name (name , step .type , request ._fixturemanager , request )
74
74
if name :
75
75
return request .getfixturevalue (name )
76
76
raise
77
- except pytest_fixtures . FixtureLookupError :
77
+ except FixtureLookupError :
78
78
raise exceptions .StepDefinitionNotFoundError (
79
79
f"Step definition is not found: { step } . "
80
80
f'Line { step .line_number } in scenario "{ scenario .name } " in the feature "{ scenario .feature .filename } "'
0 commit comments