Как включить объект webdriver из conftest.py в селен - PullRequest
0 голосов
/ 01 мая 2018

У меня есть conftest.py, который инициализирует экземпляр firefox и открывает страницу. Но как только я захочу использовать в своем test_functional.py наследование этого прибора. Я получаю веб-драйвер = нет ошибки. Я не уверен, как передать переменной драйвера значения из conftest.py. Может кто-нибудь помочь? Заранее спасибо.

#conftest.py
@pytest.fixture
def webdriver(request):
    from selenium import webdriver
    request.instance.driver = webdriver.Firefox()
    request.instance.driver.get("http://localhost:8443/")
    request.addfinalizer(request.instance.driver.quit)`

test_functional.py выглядит следующим образом:

# test_functional.py
import pytest
@pytest.mark.usefixtures("webdriver")
class TestFunction:
    def test_username(self, webdriver):
        self.driver = webdriver
        elem = driver.find_element_by_id("username")
        s = "pass"
        print(s)`

Я получаю ошибку:

self = <test_functional.TestHighchar object at 0x03E30590>, **webdriver = None**

    def test_series(self, webdriver):
        self.driver = webdriver
>       elem = driver.find_element_by_id("username")
E       NameError: name 'driver' is not defined

test_functional.py:13: NameError
========================== 1 failed in 19.95 seconds ==========================

1 Ответ

0 голосов
/ 01 мая 2018

Значение прибора Pytest равно Возвращаемое значение его функции конструктора . Поскольку ваша webdriver функция конструктора фикстур ничего не возвращает, ваша тестовая функция ничего не получает.

Просто верните созданный экземпляр драйвера из вашей функции конструктора прибора, и он будет передан вашей тестовой функции:

@pytest.fixture
def webdriver(request):
    from selenium import webdriver
    driver = webdriver.Firefox()
    request.addfinalizer(driver.quit)
    return driver

P.S. Использование @pytest.mark.usefixtures("webdriver") не требуется. Приспособление будет автоматически создано и предоставлено вашей тестовой функции, поскольку аргумент webdriver соответствует имени осветителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...