#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