Невозможно получить доступ к методам класса WebDriver, когда экземпляр WebDriver передается в тестовый класс из conftest.py (Python + Selenium) - PullRequest
1 голос
/ 01 августа 2020

Я привязываюсь к разработке моей первой структуры Selenium в Python с использованием Pytest.

Поскольку нам не следовало настраивать и удалять методы, повторяющиеся во всех тестовых классах, рекомендуется объявить их как fixture (s) в conftest.py.

Теперь у меня есть метод fixture в conftest.py (как показано на скриншоте), и ссылка на объект драйвера передается в класс TestDemo (другой снимок экрана).

Мой вопрос в том, что когда мы используем driver., мы получаем предложения всех методов, что очень удобно для пользователя.

Но когда я пытаюсь получить доступ к тому же в классе TestDemo, используя self.driver. , методы не видны.

Интересно, что если я пишу методы методов вручную, тест работает должным образом.

Не могли бы вы помочь мне с любой ошибкой в ​​моем коде или это ожидаемое поведение? enter image description here введите описание изображения здесь

1 Ответ

1 голос
/ 01 августа 2020

Вы можете добавить подсказку типа для атрибута driver класса TestDemo:

from typing import ClassVar
from selenium.webdriver import Chrome


class TestDemo:
    driver: ClassVar[Chrome]

    def test_e2e(self, setup):
        ...

Конечно, это не будет совместимо с проверкой типов stati c, например mypy (если вы используете его для набора тестов), поскольку библиотека selenium не типизирована сама по себе, но ее должно быть достаточно, чтобы IDE могли подобрать предложения кода.

Изменить:

Введение подсказок типа ClassVar работает с Visual Studio Code и Wing IDE, но, к сожалению, еще не с PyCharm, поскольку в нем отсутствует полная поддержка PEP 526, см. PY-20811 ). Чтобы получить завершение кода с помощью PyCharm, используйте подсказки типа для атрибутов экземпляра:

from typing import ClassVar
from selenium.webdriver import Chrome


class TestDemo:
    driver: Chrome

    def test_e2e(self, setup):
        ...
...