Не удается передать экземпляр объекта из conftest.py в тестовый класс - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь создать объектную область сеанса, которая создает и передает экземпляр класса драйвера для каждого отдельного класса теста в моем наборе. Я ожидал, что будет работать следующий код:

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

Чего я пытаюсь добиться в целом: открыть браузер только один раз для всех тестов (всех классов и модулей), а затем запустить различные другие классы для манипуляции с одним и тем же экземпляром драйвера. (Я знаю, что это не лучшая практика для тестирования, но это особый случай, и я собираюсь скорее автоматизировать некоторые процессы, чем проводить реальные тесты).

Заранее спасибо,

Войцех

1 Ответ

0 голосов
/ 26 октября 2019

Наконец я понял, как решить проблему самостоятельно. Оказалось, что я неправильно ссылался на экземпляр webdriver в тестовом классе. Правильно работающий класс выглядит следующим образом:

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(startup)

    def test_login(self):
        print("test run")

Теперь у меня есть доступ к моему драйверу и классу страницы, созданному с его помощью.

...