Это мой первый вопрос о ТАК, поэтому, пожалуйста, потерпите меня,
Я работаю над реализацией pytest-bdd и пытаюсь импортировать шаги использования из другого файла с именем ui_shared.py.
В настоящее время мой каталог структурирован:
proj/lib/ui_file.py
proj/lib/ui_shared.py
proj/tests/test_file.py
proj/features/file.feature
Pytest-bdd может распознавать шаги из ui_shared.py и выполнять тест до тех пор, пока ui_file.py импортирует с:
from ui_shared import *
но я бы хотел не использовать импорт *.
Я пробовал import ui_shared.py
и from ui_shared.py import common_step
, где common_step
- это функция шага, которую я хотел бы импортировать, и я получаю ошибку:
StepDefinitionNotFoundError: Step definition is not found: Given "common function".
Есть связанный вопрос, который я нашел:
Поведение: как импортировать шаги из другого файла?
а также несколько других, большинство из которых говорит об импорте шагов в общий файл шагов, ui_shared.py
в моем случае, что я уже сделал.
Вот код для ui_shared.py
:
#!/usr/bin/python
import pytest
from pytest_bdd import (
scenario,
given,
when,
then
)
@pytest.fixture(scope="function")
def context():
return{}
@given('common step')
def common_step(input):
#some method
Вот другой соответствующий код:
В file.feature
:
Scenario Outline: ui_file
Given common step
And another given step
When some step
Then last step
В test_file.py
:
#!/usr/bin/python
@pytest.fixture
def pytestbdd_strict_gherkin():
return False
@scenario('proj/features/file.feature', 'ui_file')
def test_ui_file():
"""ui_file"""
А в ui_file.py
:
import pytest
from pytest_bdd import (
scenario,
given,
when,
then
)
from ui_shared import * #This is what I am trying to change
@given('another given step')
def another_given_step(input)
#some method
@when('some step')
def some_step(input)
#some method
@then('last step')
def last_step(input)
#some method
Вышеуказанное должно работать как есть, но если метод импорта будет изменен, произойдет сбой pytest с E StepDefinitionNotFoundError
.
Я думаю, что я ищу способ импортировать все имена, определенные в ui_shared.py
, за исключением методов, которые я не использую.
В основном, как мне импортировать с помощью from file import
без * и разрешить моему ui_file.py
использовать общие шаги с ui_shared.py
?