Я пытаюсь создать объектную область сеанса, которая создает и передает экземпляр класса драйвера для каждого отдельного класса теста в моем наборе. Я ожидал, что будет работать следующий код:
import pytest
from pages.home.home_page import HomeAdmin
from base.webdriver_factory import WebDriverFactory
@pytest.fixture(scope='session', autouse=True)
def startup(request):
print("SESSION SET UP")
wdf = WebDriverFactory("firefox")
driver = wdf.get_web_driver_instance() # returns driver instance
return driver
Я ожидал получить доступ к экземпляру драйвера из моего тестового кода:
from pages.home.home_page import HomeAdmin
import unittest
import pytest
@pytest.mark.usefixtures("startup")
class HomeAdminTest(unittest.TestCase):
@pytest.fixture(autouse=True)
def setup(self, startup):
print("TEST")
self.ha = HomeAdmin(self.driver)
def test_login(self):
print("test run")
Покупка приводит к ошибке:
@pytest.fixture(autouse=True)
def setup(self, startup):
print("TEST")
> self.ha = HomeAdmin(self.driver)
E AttributeError: 'HomeAdminTest' object has no attribute 'driver'
testcases\home\home_test.py:11: AttributeError
Чего я пытаюсь добиться в целом: открыть браузер только один раз для всех тестов (всех классов и модулей), а затем запустить различные другие классы для манипуляции с одним и тем же экземпляром драйвера. (Я знаю, что это не лучшая практика для тестирования, но это особый случай, и я собираюсь скорее автоматизировать некоторые процессы, чем проводить реальные тесты).
Заранее спасибо,
Войцех