Всем привет.
Никак не могу разобраться с предварительной настройкой приложения перед запуском тестов. Если коротко, то: необходимо протестировать работу приложения предварительно в нем зарегавшись. Нужно чтобы на момент запуска теста, в приложении уже был зареган определенный пользователь и открыт определенный экран. В отдельном тесте я это делаю, но appium каждый тест начинает с нуля, т.е. снова первый вход в приложение и т.д. Повторять уже готовые шаги из теста в тест нет смысла. Кажется для этого можно использовать фикстуры, но вот только я не пойму как это сделать в behave. Кто знает. подскажите пожалуйста, как это можно сделать?
Да мануал то я видел, но не могу понять как привязать к моему случаю. Что в фикстуре нужно указывать? Последовательность шагов по регистрации пользователя?
Вам нужно перед каждым тестом нового пользователя или одного на все?
Все зависит от scope фикстуры. Вот этот раздел почитайте Fixtures — behave 1.2.7.dev3 documentation
То есть если вам нужен только 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(), то есть у вас перед запуском всех тестов пройдет авторизация - а потом уже ваши тесты.
Но тут появилось не описанное мной, доп условие ))). У меня есть также некоторые тесты, которые нужно выполнять на неавторизованном приложении. Поэтому реализовал так, как описал.