все.Возник вопрос о том, как я могу передать состояние теста между этапами в bdd (pytest_bdd) на python3.x, когда я начал писать некоторые тесты в стиле bdd.Я искал ответ и нашел один о приспособлениях и диктовках.Что-то вроде ...
@pytest.fixture
def data_through_stages():
return {}
Но есть и другие ответы, такие как приборы и объекты какого-то складского класса ...
@pytest.fixture
def context():
class Context(object):
pass
return Context()
или класса с реализацией и передачей некоторых этапов испытанийфункционал в дочернем тестовом классе, как ...
class AllSteps:
@classmethod
def given_step(cls):
print("step 1")
@classmethod
def when_step(cls):
print("step 2")
@classmethod
def then_step(cls):
print("step 3")
class TestErrors(AllSteps):
@staticmethod
@given("some given discrption")
def given():
print(f"given step: {TestErrors.given_step()}")
@staticmethod
@when("some when discrption")
def when(error):
print("when step ", TestErrors.when_step())
@staticmethod
@then("some then discrption")
def then():
print("then step ", TestErrors.then_step())
@staticmethod
@scenario("./features/some_feature.feature", "some scenarion description")
@pytest.mark.parametrize("error", [
"no response",
"internal error"
])
def test_error(error):
print(f"test error: {error}")
Главный вопрос наконец)) Какое решение является лучшим?И еще несколько дополнительных вопросов об идее переноса состояния между этапами в pytest_bdd.Это какой-то плохой стиль кода, как я слышал?Почему, если это так?