использование фикстур в behave для python

Всем привет.
Никак не могу разобраться с предварительной настройкой приложения перед запуском тестов. Если коротко, то: необходимо протестировать работу приложения предварительно в нем зарегавшись. Нужно чтобы на момент запуска теста, в приложении уже был зареган определенный пользователь и открыт определенный экран. В отдельном тесте я это делаю, но appium каждый тест начинает с нуля, т.е. снова первый вход в приложение и т.д. Повторять уже готовые шаги из теста в тест нет смысла. Кажется для этого можно использовать фикстуры, но вот только я не пойму как это сделать в behave. Кто знает. подскажите пожалуйста, как это можно сделать?

https://behave.readthedocs.io/en/latest/fixtures.html

посмотрите тут, вроде даже пример есть

Да мануал то я видел, но не могу понять как привязать к моему случаю. Что в фикстуре нужно указывать? Последовательность шагов по регистрации пользователя?

Вам нужно перед каждым тестом нового пользователя или одного на все?
Все зависит от scope фикстуры. Вот этот раздел почитайте https://behave.readthedocs.io/en/latest/fixtures.html#fixture-cleanup-points

То есть если вам нужен только 1 пользователь, то вы можете перед всеми тестами в before_all() зарегаться и перейти на нужный экран. Но учтите, что после выполнения первого теста второй начнется там, где у вас остановился первый. Если вам нужно переходить на тот нужный экран каждый раз перед каждым тестом, то скорее всего регистрацию пользователя нужно оставить в before_all(), а переход на нужный экран вынести в before_scenario(), чтобы перед каждым тестом открывался нужный экран вне зависимости от того, как завершился предыдущий тест.

Спасибо за ответ. Сейчас у меня реализовано так: в конце названия features использую “авторизованный” или “неавторизованный”. Дальше в before_feature использую

    if feature.name.count(u"_(неавторизованный)"):  
        caps["noReset"] = "false"
    else:
        caps["noReset"] = "true"

при запуске указываю behave запускать на выполнение набор тестов. Таким образом первым тестом у меня идет авторизация с noReset = True, а дальше уже тесты для авторизованных пользователей с noReset = False. Насколько костыльно это на ваш взгляд?

я не умею оценивать костыльность решений, так как опыта маловато)

Вы что-то проверяете в тесте с авторизацией или вы его добавили только для того, чтобы был авторизованный юзер и следующие тесты прошли?

и то и другое)

Ну вот “для того, чтобы был авторизованный юзер и следующие тесты прошли” это не айс мне кажется. Потому что вы не можете взять и запустить к примеру 3-й тест отдельно. Вам всегда нужно чтобы перед этим был запущен первый тест.

Поэтому я и предлагал добавить авторизацию в before_all(), то есть у вас перед запуском всех тестов пройдет авторизация - а потом уже ваши тесты.

Но тут появилось не описанное мной, доп условие ))). У меня есть также некоторые тесты, которые нужно выполнять на неавторизованном приложении. Поэтому реализовал так, как описал.