Как включить тестовые классы с init в набор тестов Pytest? - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь создать набор тестов с pytest и Selenium, используя Page Object Models для проектирования шаблонов.Для использования моих классов страниц в моих тестах я просто импортировал их в свой метод TestClass __init__, поскольку их нужно создавать с помощью драйвера.

Я знаю, что по умолчанию pytest игнорирует классы с __init__ метод.Я также знаю, прочитав здесь , что можно настроить, где pytest собирает тесты.Можно ли сделать так, чтобы он рассматривал тесты классов с __init__ вместо того, чтобы возвращать ошибку «Пустой набор»?

@pytest.fixture(scope="session")
def driver_init(request):
    from selenium import webdriver
    driver = webdriver.Chrome()
    session = request.node
    page = PageFunctions(driver)
    login_page = LoginPage(driver)
    registration_page = RegistrationPage(driver)

    for item in session.items:
        cls = item.getparent(pytest.Class)
        setattr(cls.obj, "driver", driver)
        setattr(cls.obj, "page", page)
        setattr(cls.obj, "login", login_page)
        setattr(cls.obj, "registration", registration_page)

1 Ответ

0 голосов
/ 29 мая 2019

Pytest и Unittest имеют несколько различных соглашений. Обычно стоит избегать смешивания двух в одной и той же тестовой функции.

Если вы работаете исключительно с Pytest, вы бы передавали свои приборы в качестве аргументов вашей тестовой функции, например ::100100

import pytest
from selenium import webdriver


@pytest.fixture
def driver():
    driver = webdriver.Chrome()
    return driver


def test_func(driver):
    # `driver` is found by pytest in the fixture above and
    # automatically passed in
    request = ... # Instantiate your request (not in your included code)

    session = request.node
    page = PageFunctions(driver)
    login_page = LoginPage(driver)
    registration_page = RegistrationPage(driver)

    # Make some assertions about your data, e.g.:
    assert page is not None

Вы не включили все определения / импорт объектов, поэтому трудно понять, чего вы пытаетесь достичь с помощью теста, но, надеюсь, это даст вам представление о соглашениях pytest.

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