Приспособление в поведении не применяется

#python-3.x #fixtures #python-behave

Вопрос:

Мне нужно приспособление в моем коде поведения, чтобы все пользователи, которых я создаю во время тестирования, автоматически очищались. В результате я добавил следующий код

 #test/features/steps/environment.py

@fixture()
def user_cleanup(context):
    # -- SETUP-FIXTURE PART:
    context.users_to_be_cleaned_up = []
    print ("Creating Fixture")
    yield context.users_to_be_cleaned_up
    # -- CLEANUP-FIXTURE PART:
    for userid in context.users_to_be_cleaned_up:
        resp = delete_database_entry("users", userid)
        print (resp)
    context.users_to_be_cleaned_up = []


def before_feature(context, feature):
    if "fixture.user.cleanup" in feature.tags:
        use_fixture(user_cleanup, context)
 

В свой файл функций я добавил следующее

 @fixture.user.cleanup
Feature: Validating backend from the app side
    
    Scenario Outline: Super Admin has permission to create other users
        Given a set of existing users:
                | user                  | details     |
                | superadmin   | userdetails |             
        When "superadmin" successfully logs in
        Then he can create non-existing "<user>" with "<details>"
            and "<user>" can login successfully with "<details>"

        Examples: User Roles
                | user                | details      |
                | superadmin_1        | user details | 
 

Идея состояла в том, чтобы тест добавил всех пользователей в context.users_to_be_cleaned_up. Но в тесте, когда я пытаюсь добавить, говорится, что свойство users_to_be_cleaned_up отсутствует в контексте.

Есть идеи, что я здесь делаю не так?

Ответ №1:

Я получил ответ на этот вопрос и записываю это здесь для потомков.

Тебе нужно сохранить свою environments.py на уровне функций, а не на уровне шагов.

Итак, структура в ее нынешнем виде

 |
|-test.feature
|_environment.py
|--steps
    |
    |- steps.py