Моя идея была в том, чтобы при запуске сессии или к примеру модуля, логиниться, получать куки и затем добавлять куки при каждом запуске браузера (для каждого теста).
Я сделал фикстуру которая логинится и скачивает куки, поставил scope=“session”
Но при запуске теста получаю ошибку, из которой единственное что я понимаю это то, что есть какой-то конфликт между фикстурой браузера со scope=“function” и фикстурой которую я сделал, обе находятся в conftest.py Подскажите пожалуйста в чём тут проблема и как это решать? Если поставить одинаковый скоуп у фикстур, то всё работает, но не так как мне нужно.
То что я изложу ниже это рассуждения, на практике не пробовал
Ты пользуешься фикстурой browser, которая скорее всего создает новый объект браузера для каждого тестогого метода.
В фикстуре get_cookies, ты просишь себе браузер, возможно pytest не согласен ее вызвать для другой фикстуры в начале сессии или в browser какой-то перекрестный вызов get_cookies
Попробуй для начала продублировать код создания браузера непосредственно в get_cookies
Решил этот вопрос несколько дней назад, но не дошли руки отписаться. Ты мыслишь верно, вот в чём была моя проблема более развёрнуто, вдруг кому-то пригодится. Из документации Pytest - при запросе фикстуры функцией сначала инициализиурются фикстуры с самой широкой областью действия - session и module, а затем - фикстуры более низкого уровня с областями class или function. В рамках одной тестовой функции порядок создания фикстур с одинаковой областью действия зависит от очередности вызова этих фикстур и установленных между ними зависимостей. При этом фикстуры с параметром autouse = True инициализируются прежде явно объявленных фикстур того же уровня.
Получилось что я указываю в фикстуре get_cookies аргументом browser, но т.к. эта фикстура инициализируется после фикстуры браузера по очередности (scope=“function”), get_cookies не может обнаружить аргумент и появляется ошибка.
Переделал код таким образом - убрал аргумент, в коде явно указал что browser это экземпляр вебдрайвера.