Перейти к содержимому

vitaly_rev

Регистрация: 14 июн 2017
Offline Активность: 10 июл 2019 20:06
-----

Мои темы

Прогон тестовых наборов под разными ролевыми моделями пользователей

04 мая 2018 - 14:45

Здравствуйте, коллеги!

 

Пытаюсь автоматизировать веб-приложение с помощью Selenium WebDriver + Pytest.

 

Проблема такая: в проекте имеется несколько различных ролевых моделей пользователей (например, админ, модератор, пользователь и тд), которым, соответственно, доступен различный функционал. Авторизация выполняется при инициализации браузера. Однако такая архитектура предполагает прогон теста только под одной ролевой моделью (например, админом), для прогона под другой ролевой моделью (например, модератором) нужно вручную менять данные для авторизации, что в условиях запуска и прогона тестов на CI становится невозможным.

 

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

 

Вот, собственно, и вопрос, подскажите, как можно более толково разграничить прогоны тестов под разными ролями? Выполнять их последовательно или параллельно в разных окнах - особого значения не имеет.

 

Вот реализация авторизации (данные для авторизации берутся из файла):


fixture = None

@pytest.fixture
def driver(request, data_login):
    global fixture
    # проверка браузера и инициализация
    if fixture is None:
        fixture = Application()
    else:
        if not fixture.is_valid():
            fixture = Application()
    # проверка авторизации пользователя и авторизация 
    fixture.session.open_page()
    fixture.session.ensure_login(data_login)
    return fixture