Какова лучшая практика передачи некоторых состояний между этапами python_bdd? - PullRequest
0 голосов
/ 18 апреля 2019

все.Возник вопрос о том, как я могу передать состояние теста между этапами в 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.Это какой-то плохой стиль кода, как я слышал?Почему, если это так?

...