Рубрики
Без рубрики

Параллельное тестирование с селеной сеткой

Selenium является одним из широко используемых Frameworks Test Automation для автоматического тестирования браузера. Селен… Помечено Python, тестирование, селен, учебник.

Selenium является одним из широко используемых Frameworks Test Automation для автоматического тестирования браузера. Тестовая автоматизация селена действительно полезен для тестирования веб-сайтов или веб-приложений по различным комбинациям браузеров, операционных систем и устройств. Предоставление улучшению функционального тестового покрытия, поскольку код проверяется на широком диапазоне комбинаций.

Запуск этих тестов в последовательности может быть действительно трудоемким, так как вы ожидаете, пока один тест завершится перед запуском других тестов. Вы можете сэкономить много времени, выполняя тесты параллельно, тем самым улучшая масштабируемость вашей автоматизации тестирования селена. Параллельное тестирование помогает выполнять тесты на браузерах одновременно, обеспечивая лучший тестовый охват в более короткое время.

В этом Учебник Selenium Python , Я покажу. Вы, как запустить параллельные тесты с селеном с Python и Pteest с помощью селена. Сетка селена для запуска может быть локальным или облачным. Для получения дополнительной информации о настройке локальной сети SELENIUM мы рекомендуем взглянуть на наш подробный блог на настройке селена для тестирования автоматизации.

Как запустить тесты Selenium параллельно с Python с помощью Pteest-Xdist?

По умолчанию Pytest не поддерживает параллельное тестирование, которое чрезвычайно необходимо для сценариев, таких как автоматическое тестирование браузера. Параллельное тестирование является обязательным для достижения непрерывной интеграции, поскольку тесты могут быть выполнены с быстрым темпом. Чтобы запустить тесты Selenium параллельно с Python, вам нужно установить плагин Pteest-Xdist.

Особенности (или режимы выполнения) Pтобы-XDist

Это PteSt распределенный плагин для тестирования, который расширяет Pteest с некоторыми уникальными режимами выполнения, упомянутых ниже в этом учебном пособии Selenium Python:

  • Многопроцессная балансировка нагрузки – Множественные процессоры или хосты могут быть использованы для комбинированного тестового прогона. Это помогает ускорить развитие наряду с использованием специальных ресурсов машин.
  • LooponFail – Испытания могут быть выполнены несколько раз в подпрограмме. После каждого тестового прогона PteSt повторно проводит все тесты, которые не удалились ранее. Этот процесс повторяется до тех пор, пока все тесты не пройдут. Это считается концом теста.
  • Многоплатформенный охват – Различные переводчики Python (E.g. Pytest, Pyunit и т. Д.) Или могут быть указаны платформы, и могут быть указаны платформы, а тесты могут быть выполнены параллельно на всех из них.

Установка Pтойца-Xdist для запуска тестов Selenium параллельно с Python

Плагин Xdist может быть установлен путем выполнения любого из следующих команд на терминале:

pip install pytest-xdist
easy_install pytest-xdist

Ниже приведены ниже в этом уроке Selenium Python является установочный скриншот Xdist Plugin для запуска тестов Selenium параллельно с Python.

Варианты командной строки для параллельного тестирования

Плагин PteSt-Xdist предоставляет параметры командной строки для отправки тестов на несколько процессоров. Количество процессоров пропускается после опции – n.

pytest -n 

Опция ускоряет параллельное исполнение для длительных тестов, а также тесты, которые имеют частые ввода/вывода (Входные/вывод) операции в реализации. Pytest-Xdist (или xdist-plugin) имеет много других вариантов, детали того же доступны в Документация Xdist-Plugin .

Запустите тесты Selenium параллельно с Python с помощью Pytest-Xdist Plugin

Чтобы продемонстрировать использование плагина PteSt-Xdist для запуска тестов Selenium параллельно с Python, я возьму четыре сценария тестирования для этого учебного пособия Selenium Python, который я буду выполнять на веб-браузерах Chrome и Firefox. Четыре тестовые сценарии разделены на два файла Python, а приспособления передаются через Conftest.py. Для получения более подробной информации о приборах для Ptyest и использование Conftest.py вы можете ссылаться на предыдущий учебник Selenium Python на приборах Ptyest.

Испытательный сценарий – 1 (запустить тесты селена параллельно с Python на браузере Chrome)

Тестовый случай – 1

  1. Перейдите к URL https://lambdatest.github.io/sample-todo-app/
  2. Выберите первые два флажка
  3. Отправить «счастливое тестирование на лямбдатест» на текстовое поле с
  4. Нажмите кнопку «Добавить» и убедитесь, был ли текст был добавлен или нет

Тестовый случай – 2

  1. Перейдите к URL https://lambdatest.com/
  2. Сравните название окна с ожидаемым заголовком
  3. Поднять утверждение, если названия не совпадают

Испытательный сценарий – 2 ((запустить испытания селена параллельно с Python на браузере Firefox)

Тестовый случай – 1

  1. Перейдите к URL https://www.google.com.
  2. Поиск “лямбдатест”
  3. Нажмите на первый результат теста
  4. Поднимите утверждение, если название страницы не соответствует ожидаемому названию

Тестовый случай – 2

Реализация

Светильники для вызова браузера Chrome и Firefox добавляются в Conftest.py. Файл помещается в корневую папку, в которой также расположены файлы, которые содержат реализацию для тестовых случаев.

Conftest.py

В качестве разных URL-адресов используются для автоматического тестирования браузера, объем устанавливается в класс (вместо сеанса), и для каждого теста загружается новый экземпляр браузера.

#Run Selenium tests in parallel with Python for Selenium Python tutorial
import pytest
from selenium import webdriver
@pytest.fixture(scope="class")
def driver_init_1(request):
    web_driver = webdriver.Chrome()
    request.cls.driver = web_driver
    yield
    web_driver.close()

@pytest.fixture(scope="class")
def driver_init_2(request):
    web_driver = webdriver.Firefox()
    request.cls.driver = web_driver
    yield
    web_driver.close()

test_pytest_1.py

Этот файл содержит реализацию тестового сценария – 1 (запустить тесты SELENIUM параллельно с Python на браузере Chrome). Декоратор @ pytest.mark.useFixtures включен для использования прибора Driver_Chrome_init ().

Он содержит два тестовых случая для запуска тестов SELENIUM параллельно с Python:

  • test_google_search () – Поиск поиска в домашней странице Google расположен с помощью метода Find_element_by_xpath из Webdriver Selenium. Как только элемент расположен, поиск текст (I.E. lambdatest) передается в поле поиска. После выполнения операции поиска первый результат поиска расположен с помощью его XPath. Нажмите Метод Webdriver Selenium Webdriver используется для нажима на первый результат, пост, которое называется заголовка окна, чтобы проверить успех теста.
  • test_lambdatest_blog_load () – Тестовый URL https://www.lambdatest.com/blog загружен, а заголовок окна сравнивается с ожидаемым заголовком. Утверждение поднимается, если названия не совпадают.

Close () Команда в Webdriver Selenium используется для закрытия окна браузера после завершения выполнения теста.

import pytest
import pytest_html
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
from time import sleep
import sys

@pytest.mark.usefixtures("driver_init_2")
class BasicTest:
    pass
class Test_URL_Firefox(BasicTest):
    def test_google_search(self):
        self.driver.get('https://www.google.com/')
        self.driver.maximize_window()
        title = "Google"
        assert title == self.driver.title

        search_text = "LambdaTest"
        search_box = self.driver.find_element_by_xpath("//input[@name='q']")
        search_box.send_keys(search_text)

        time.sleep(5)

        # Option 1 - To Submit the search
        # search_box.submit()

        # Option 2 - To Submit the search
        search_box.send_keys(Keys.ARROW_DOWN)
        search_box.send_keys(Keys.ARROW_UP)
        time.sleep(2)
        search_box.send_keys(Keys.RETURN)

        time.sleep(5)

        # Click on the LambdaTest HomePage Link
        title = "Cross Browser Testing Tools | Free Automated Website Testing | LambdaTest"
        lt_link = self.driver.find_element_by_xpath("//h3[.='LambdaTest: Cross Browser Testing Tools | Free Automated ...']")
        lt_link.click()

        time.sleep(10)
        assert title == self.driver.title   
        time.sleep(2)   

    def test_lambdatest_blog_load(self):
        self.driver.get('https://www.lambdatest.com/blog/')
        self.driver.maximize_window()

        expected_title = "LambdaTest | A Cross Browser Testing Blog"
        assert expected_title ==  self.driver.title
        time.sleep(5)

Два теста выполняются параллельно. Следовательно, -N вариант (I.E. NUM_OF_CPUS) установлен на 2. Выполнение выполняется, вызывая следующую команду на терминале.

pytest -s -v -n=2

Вот скриншот выполнения, который указывает, что два теста выполняются одновременно (то есть параллельно).

Как видно ниже в этом уроке Selenium Python, все четыре теста прошли для запуска тестов Selenium параллельно с Python в Pteest.

Проблемы с внутренней селеной сеткой

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

Идеальная среда выполнения должна быть сетью различных взаимосвязанных машин, которые имеют разные среды браузера, так что тесты могут быть выполнены параллельно. Это то, для чего создан селена сетки для. Селенская сетка была создана как часть Selenium Suite Phillipe Hanrigou в 2008 году.

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

Ниже в этом учении Selenium Python урок являются одними из основных проблем, которые тестеры могут столкнуться с тестированием по перекрестному браузеру на локальной селе Selenium:

  1. Масштабируемость – С каждым новым выпуском браузера локальная сеть Selenium также должна быть масштабирована. Расшировка потребует значительных инвестиций с точки зрения инфраструктуры, а ROI (возврат инвестиций) может быть не очень высокой.
  2. Ограничения на тестирование кросс-браузера – Сосредоточенность тестирования вашего продукта против различных комбинаций браузера должно быть на улучшении качества продукта. С 2000+ браузерами на выбор, параллельное тестовое исполнение практически безгранично. Наряду с последними браузерами (и комбинациями платформы) тестирование должно быть выполнено на устаревших браузерах.

Перемещение Тестирование кросс-браузера На онлайн-селеную сетку, тестовая команда может сосредоточиться прямо на задаче под рукой, а не беспокоиться о содержании внутренней испытательной инфраструктуры.

  1. Надежность по цене – Разработка лаборатории устройства, поддержание VMS & их лицензий, и обеспечение того, чтобы они были функциональными (круглосуточно), могут быть непростой и дорогой задачей.
  2. Держать с последними релизами Selenium – Онлайн середина селена обычно поддерживается в курсе последних селенов, включая релизы Selenium Alpha. Например, Selenium 4 имеет множество новых функций, которые должны быть доступны для автоматизации тестирования в кратчайшие сроки. С локальной селеной сеткой было бы сложной задачей обновить инфраструктуру Selenium с каждым новым выпуском (особенно альфа, бета-релизы.)

Независимо от размера инфраструктуры, вам все равно понадобится собственная команда, чтобы посмотреть после надежности и обслуживания инфраструктуры селена. Фактические расходы, понесенные в создании инфраструктуры, могут быть значительно выше, чем оценки балла.

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

Начало работы с параллельным тестированием на онлайн-селениуме

Lambdatest предлагает надежную и масштабируемую инфраструктуру онлайн-селена, которая позволяет тестировать на 2000+ реальных браузерах и операционных системах в Интернете. Доступен полный список доступных браузеров здесь Отказ

Основным преимуществом использования надежной онлайн-инфраструктуры селениума, таких как «Ланмбдатест», нет необходимости устанавливать какое-либо дополнительное программное обеспечение (или плагин) на вашем компьютере. Браузеры на VMS в LAMBDATEST имеют предустановленные версии Adobe Flash, Adobe Shockwave, Adobe Reader, Microsoft Silverlight и т. Д. Следовательно, позволяя легко проверить RIA (богатые интернет-приложения). Более подробную информацию о платформе Lambdatest доступны на странице FAQ.

Чтобы начать с тестирования кросс-браузера на Lambdatest, выполните следующие действия:

  1. Создайте учетную запись в Lambdatest, нажав здесь. Ключ пользователя и доступ, доступный в разделе профиля, необходимы для доступа к сети селена на лямбдатесте.
  2. В зависимости от требований к тестированию, выберите соответствующую План подписки Отказ Для начала есть Lite Plan, который бесплатный для жизни и предлагает бесплатные 100 минут автоматизации в течение 15 дней.

Как только вы входили в систему на платформу LAMBDATEST, используйте генератор желаемых возможностей Selenium для настройки тестов SELENIUM на Lambdatest Selenium Grid.

Портирование испытаний автоматизации PteSt в Online Selenium Grid

Прежде чем портировать существующую реализацию для селена LAMBDATEST SELENIUM, мы генерируем необходимые возможности браузера с использованием генератора возможностей на лямбдатесте. Для демонстрации мы используем те же примеры, которые были продемонстрированы ранее.

Тестовый сценарий – 1 (браузер: Chrome 80.0, платформа: Windows 10)

Тестовый случай – 1

  1. Перейдите к URL https://lambdatest.github.io/sample-todo-app/
  2. Выберите первые два флажка
  3. Отправить «счастливое тестирование на лямбдатест» на текстовое поле с
  4. Нажмите кнопку «Добавить» и убедитесь, был ли текст был добавлен или нет

Тестовый случай – 2

  1. Перейдите к URL https://lambdatest.com/
  2. Сравните название окна с ожидаемым заголовком
  3. Поднять утверждение, если названия не совпадают

Испытательный сценарий – 2 (браузер: Safari 12.0, платформа: Macos Mojave)

Тестовый случай – 1

  1. Перейдите к URL https://www.google.com.
  2. Поиск “лямбдатест”
  3. Нажмите на первый результат теста
  4. Поднимите утверждение, если название страницы не соответствует ожидаемому названию

Тестовый случай – 2

Генератор возможностей используется для создания возможностей для (комбинаций браузера + ОС). Поскольку используется тестовые рамки, используются PteSt, мы выбираем язык как Python.

Возможности устройства для тестового сценария – 1 (браузер: Chrome 80.0, платформа: Windows 10)

capabilities = {
        "build" : "Porting test to LambdaTest Selenium Grid (Chrome)",
        "name" : "Porting test to LambdaTest Selenium Grid (Chrome)",
        "platform" : "Windows 10",
        "browserName" : "Chrome",
        "version" : "80.0"
}

Возможности устройства для тестового сценария – 2 (браузер: Safari 12.0, платформа: Macos Mojave)

capabilities = {
        "build" : "Porting test to LambdaTest Selenium Grid",
        "name" : "Porting test to LambdaTest Selenium Grid",
        "platform" : "macOS Mojave",
        "browserName" : "Safari",
        "version" : "12.0"
}

Параметры, поставляемые в нужные возможности для запуска тестов SELENIUM параллельно с Python, находятся ниже в этом руководянии Selenium Python:

Портирование теста на Lambdatest Selenium Grid Строить Имя сборки, с помощью которого вы можете определить сборку
Портирование теста на Lambdatest Selenium Grid Имя Имя теста для определения теста быть выполненным
Windows 10, Macos Mojave и т. Д. Платформа Платформа / операционная система, на которую вы намереваете тест быть выполненным
Firefox, Chrome, Microsoft Edge, Internet Explorer Браунтировать Браузер, на котором будет проведен тест автоматизации
Firefox версия 64.0, Chrome Version 70.0 и др. версия Конкретная версия браузера, на которой будет проведен тест
3.13.0 selenium_version. Версия селена, которая будет использоваться для тестирования
2.42 firefox.driver. Удаленная версия Webdriver для Firefox

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

Поскольку тесты выполняются в онлайн Селенская сетка На лямбдатесте учетные данные, состоящие из комбинации пользовательского имени и токена доступа, используются для доступа к Abjectest Grid URL – @ hub.lambdatest.com/wd/hub.

remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub"

Удаленный API Webdriver использует возможности удаленного URL и браузеров (CH_Capabilities/SAF_Capabilities), которые были сгенерированы с использованием генератора возможностей LambdaTest.

web_driver = webdriver.Remote(command_executor = remote_url, desired_capabilities = saf_capabilities)

Conftest.py используется для обмена светильниками по файлам. Изменения для портирования от локальной сетки селена к селениуме Lambdatest только выполняются только в Conftest.py. Это изменение инфраструктуры, чтобы сделать код работы на сетке лямбдатестра.

Conftest.py

Изменения связаны только для портирования теста на онлайн-селеную сетку на лямбдатесте.

# Import the 'modules' that are required for execution to run Selenium tests in parallel with Python
import pytest
from selenium import webdriver
import urllib3
import warnings

ch_capabilities = {
        "build" : "Porting test to LambdaTest Selenium Grid (Chrome)",
        "name" : "Porting test to LambdaTest Selenium Grid (Chrome)",
        "platform" : "Windows 10",
        "browserName" : "Chrome",
        "version" : "80.0"
}

saf_capabilities = {
        "build" : "Porting test to LambdaTest Selenium Grid",
        "name" : "Porting test to LambdaTest Selenium Grid",
        "platform" : "macOS Mojave",
        "browserName" : "Safari",
        "version" : "12.0"
}

user_name = "user-name"
app_key = "app_key"
@pytest.fixture(scope="class")
def driver_init_1(request):
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub"
    # web_driver = webdriver.Chrome()
    web_driver = webdriver.Remote(command_executor = remote_url, desired_capabilities = ch_capabilities)
.........................
.........................
@pytest.fixture(scope="class")
def driver_init_2(request):
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub"
    # web_driver = webdriver.Firefox()
    web_driver = webdriver.Remote(command_executor = remote_url, desired_capabilities = saf_capabilities)
.........................
.........................

test_pytest_1.py & test_pytest_2.py.

Нет никаких изменений, необходимых в основной реализации, поскольку изменения связаны только с инфраструктурой. Следовательно, реализация в Test_PYTEST_1.PY и TEST_PYTESTEST_2.PY остается такой же, как тот, который используется для тестирования кросс-браузера на локальной сетевой сети, даже если мы использовали различные комбинации браузера и ОС для тестирования по перекрестному браузеру.

Для выполнения кода на сети селена онлайн на лямбдатесте мы используем плагин Pteest-Xdist с рядом параллельных тестов, установленных на 4. Причина выбора 4 заключается в том, что мой текущий план выставления счетов на Lambdatest позволяет выполнять 5 тестов параллельно.

Выполните следующую команду на терминале для запуска тестов SELENIUM параллельно с Python:

pytest -s -v -n=4

Вот скриншот выполнения, который указывает на то, что четыре тесты работают параллельно на онлайн-селениуме:

Вот скриншот выполнения терминала, указывающий, что все четыре тесты для запуска тестов селена параллельно проходили Python.

Состояние испытаний автоматизации можно получить доступ, посетив Гронология автоматизации на лямбдатесте. Вы можете взглянуть на общее выполнение тестов, навигацию на эти тесты.

Как видно ниже в этом уроке Selenium Python, тесты успешно выполнялись в онлайн-селениуме.

В общем

В этом уроке Selenium Python я посмотрел на использование Pytest Framework для локальной и онлайн-селениума для запуска тестов Selenium параллельно с Python. Автоматическое тестирование браузера с использованием локального Селен Сетка может поразить контрольно-пропускной пункт в любой момент, когда он не масштабируется и требует значительных инвестиций на настройку и поддержание общей инфраструктуры. Сетка онлайн-селена помогает ускорить процесс тестирования, поскольку тесты могут быть выполнены параллельно на надежной селениуме.

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

Я надеюсь, что вы нашли эту статью информацию и обнаружили, что это полезно. В случае каких-либо сомнений, протягивайте в разделе «Комментарий» ниже. Кроме того, я бы понравилось, если бы вы могли поделиться этим руководством Selenium Python со своими сверстниками и коллегами, это может помочь им, если они сталкиваются с любыми проблемами для запуска тестов Selenium параллельно с Python. Это все сейчас! 😊

Оригинал: “https://dev.to/himanshusheth004/parallel-testing-with-selenium-grid-lm3”