Платформы автоматизации тестирования, такие как pytest , очень эффективны в автоматизации тестов при использовании вместе с Selenium, результаты тестирования, сгенерированные этими тестами, могут стать более содержательными, если вы объедините тестирование с функцией отчетности, поддерживаемой платформой тестирования.
Основное преимущество функции отчета заключается в том, что выходные данные генерируются в более простом и удобочитаемом формате, в основном в виде HTML или XML-файла. Поскольку эти форматы файлов широко используются, это облегчает задачу декодирования выходных данных. В этой статье мы рассмотрим, как вы можете использовать генерацию отчетов pytest с помощью Selenium. Мы также рассмотрим способы расширения функциональности отчетов за счет использования API-интерфейсов лямбда-тестов для Selenium .
Важность Создания Отчетов Selenium
Прежде чем глубоко погрузиться в генерацию отчетов pytest, важно понять актуальность создания отчетов Selenium в контексте проекта/продукта веб-разработки.
Отслеживание и удобочитаемость
Когда тестировщик выполняет выполнение теста, результаты тестирования вместе с необходимой важной информацией (например, пройденные тестовые примеры, выпуск, в котором был выполнен тест, сведения о входных аргументах, подробная информация о сценариях сбоев и т.д.) Могут потребоваться для дальнейшего использования. Это может быть сохранено в популярном формате (HTML, XML и т.д.) В виде отчетов Selenium, Что позволяет легко отслеживать зрелость кода в течение определенного периода времени.
Простота Интеграции И Исполнения
Будь то генерация отчетов pytest или отчетов Selenium для любого другого вида платформы автоматизации тестирования, интеграция модуля, поддерживающего генерацию отчетов Selenium, например, pytest-html для генерации отчетов pytest, является простой задачей. Все, что вам нужно сделать, это установить модуль и импортировать его в свой тестовый код. Если вы используете параметры командной строки для выполнения тестового кода, создание отчетов – это просто добавление пары параметров e.g..html в pytest.
Визуальный Контент Для Удобства Сравнения
Могут быть сценарии, в которых вы хотели бы сохранить результаты тестов пользовательского интерфейса, и отчеты Selenium – самый простой способ сохранить эту информацию.
Интеграция С инструментами CI/CD
Большинство модулей отчетов Selenium, например, pytest-html, используемых для создания отчетов pytest, могут быть легко интегрированы в ваши инструменты обработки CI/CD (Непрерывная интеграция/непрерывная доставка), такие как Jenkins, CircleCI. Следовательно, вы не вносите никаких специальных изменений в свой процесс сборки и интеграции.
Назад Для создания отчета pytest С использованием pytest-html
Генерация отчетов Pytest для ваших скриптов Selenium может работать как по волшебству с точки зрения экономии вашего времени и усилий за счет упорядоченного хранения данных, поэтому легко визуализировать и понимать, где и когда ваши скрипты терпят неудачу.
pytest-html – Установка и использование
Хотя существуют различные механизмы для создания отчетов Selenium в pytest, pytest-html является наиболее предпочтительным вариантом для создания отчетов pytest. Модуль pytest-html изначально был подразделом модуля pytest-mozwebqa , который позже был сделан отдельным плагином/модулем, единственной целью которого было создание отчетов Selenium (альтернатива отчету JUnit или выводу на консоль).
Если вы новичок в pytest, то я бы рекомендовал вам ознакомиться с одной из моих предыдущих статей, которая поможет вам запустить ваш первый скрипт автоматизации с использованием pytest с Selenium WebDriver .
С учетом сказанного давайте начнем с создания отчетов pytest с использованием pytest-html. Выполните приведенную ниже команду в терминале для установки модуля pytest-html.
pip install pytest-html
Ниже приведен снимок выполняемой команды.
В целях реализации мы используем версию сообщества PyCharm IDE, которую можно загрузить отсюда. Чтобы продемонстрировать использование pytest-html для создания отчетов Selenium, мы рассмотрим пример pytest, который состоит из pytest fixtures и Selenium Webdriver.
# Import the 'modules' that are required for the execution
import pytest
import pytest_html
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from time import sleep
#Fixture for Firefox
@pytest.fixture(params=["chrome", "firefox"],scope="class")
def driver_init(request):
if request.param == "chrome":
web_driver = webdriver.Chrome()
if request.param == "firefox":
web_driver = webdriver.Firefox()
request.cls.driver = web_driver
yield
web_driver.close()
@pytest.mark.usefixtures("driver_init")
class BasicTest:
pass
class Test_URL(BasicTest):
def test_open_url(self):
self.driver.get("https://www.lambdatest.com/")
print(self.driver.title)
sleep(5)
Как видно из приведенного выше примера, тестируемый URL-адрес https://www.lambdatest.com открывается в браузере Chrome и Firefox. Вы также можете заметить, что модуль pytest-html импортируется для включения функций отчетности. Вы можете использовать следующую команду для выполнения того же самого.
py.test.exe --capture=no --verbose --html= test_selenium_webdriver-1.py test_pytest-html.py
Результаты выполнения приведены ниже.
Ниже приведен отчет в формате HTML, содержащий информацию о тестах и их результатах.
pytest-Улучшение html–отчетов
Внешний вид отчета можно изменить, передав параметры каскадных таблиц стилей (CSS) с помощью опции –css. Поскольку можно применить несколько настроек CSS, они будут применяться в том порядке, в котором получены параметры.
pytest --html=pytest_selenium_test_report.html --css=
Если вы планируете добавить дополнительные сведения в отчет HTML, вы можете сделать то же самое, создав дополнительный список в объекте отчета. Ниже перечислены некоторые из опций, которые можно использовать для добавления более информативного содержимого в отчет pytest Selenium.
При вводе пути к изображению вы можете использовать как относительный, так и абсолютный путь. Вы также можете изменить таблицу результатов, чтобы улучшить удобочитаемость или добавить дополнительную информацию. Вы можете обратиться https://pypi.org/project/pytest-html/ для получения подробной процедуры изменения таблицы результатов.
Подробные Отчеты Selenium Для Эффективного Анализа Кроссбраузерного Тестирования
Одним из недостатков, с которым сталкивается каждый проект/продукт веб-разработки на этапе кросс-браузерного тестирования, является степень тестирования, которое может выполняться в разных типах и версиях браузеров (Firefox, Internet Explorer, Microsoft Edge, Chrome и т.д.). Все усложняется, когда вы добавляете дополнительную комбинацию операционных систем (Windows, Linux, macOS, iOS, Android и т.д.) и различных устройств, таких как мобильные, настольные, планшеты. Вместо того, чтобы пытаться масштабировать существующую инфраструктуру в соответствии с требованиями команды тестирования, рекомендуется выполнить кроссбраузерное тестирование в облаке. Основное преимущество такого подхода заключается в том, что он более масштабируемый и экономичный, чем создание локальной инфраструктуры. Кроме того, вы можете ускорить автоматизированное кроссбраузерное тестирование процесс можно улучшить, используя Параллельное тестирование в Selenium .
Lambda Test предоставляет простую в масштабировании кроссбраузерное тестирование платформу в облаке, которая предлагает более 2000 + реальных браузеров и операционных систем онлайн, чтобы помочь вам полностью расширить охват кроссбраузерного тестирования. Вы также можете выполнять автоматические тесты Selenium, используя нашу надежную, простую в масштабировании и более быструю Selenium Grid в облаке .
ЗАПУСКАЙТЕ СВОИ СКРИПТЫ SELENIUM В ОБЛАЧНОЙ СЕТКЕ
Более 2000 Браузеров И ОС
БЕСПЛАТНАЯ РЕГИСТРАЦИЯ
На этапе разработки и тестирования продукта вы можете захотеть проверить функции в разных браузерах, а наличие результатов выполнения теста в облаке облегчает отслеживание. Таким образом, вы можете легко отслеживать аналитику тестов и результаты тестов, а также делиться ими с членами своей команды.
Lambda Test предоставил Selenium API, который решает все эти проблемы, и с помощью этого API вы можете управлять своими тестовыми сборками, сеансами тестирования, отслеживать аналитику тестов, получать журналы, получать скриншоты для каждого теста и т.д. Непосредственно с их платформы в предпочитаемое вами хранилище, даже без входа в свою учетную запись LambdaTest. Он предоставляет файл в формате JSON, который содержит синтаксис для каждого браузера и соответствующую версию браузера вместе с операционной системой, в которой выполняются тесты.
URL-адрес API, который можно использовать для получения дополнительной информации из отчетов о тестировании, приведен ниже
https://api.lambdatest.com/automation/api/v1/
Чтобы использовать API, все, что вам нужно сделать, это добавить соответствующую конечную точку в конец вычисляемого URL-адреса и выдать GET/POST. Например, вы можете использовать “/сборки” , чтобы получить подробную информацию о каждой сборке, выполненной в этой конкретной учетной записи. Вычисленный URL-адрес будет выглядеть следующим образом: https://api.lambdatest.com/automation/api/v1/builds
Чтобы получить информацию о количестве тестовых сессий. Вычисленный URL-адрес: https://api.lambdatest.com/automation/api/v1/sessions
Вы даже можете проверить информацию на уровне сеанса, используя идентификатор сеанса, чтобы получить информацию, относящуюся к определенному сеансу. Вычисленный URL-адрес:
Вычисленный URL-адрес:
Обратитесь к нашему блогу о Lambda Test Selenium API для получения более подробной информации, касающейся всех конечных точек, которые можно использовать вместе с LambdaTest API.
Lambda Test API поможет вам извлекать и анализировать отчеты о тестировании Selenium с максимально подробной детализацией, которую вы хотите .
Генерация Подробного Отчета pytest Из LambdaTest
Теперь, когда у вас есть знания о поддерживаемых конечных точках, давайте посмотрим, как их можно правильно использовать для создания отчетов pytest с использованием LambdaTest. Чтобы начать, вы должны войти в Справочный документ API с вашим именем пользователя LambdaTest и ключом доступа. Вы можете найти эти сведения в Панели автоматизации тестирования лямбда-тестов , щелкнув значок key .
Как только у вас будет под рукой ваше имя пользователя и ключ доступа, вам необходимо авторизовать Lambdatest API, используя эти учетные данные. Как только вы авторизуетесь, ПОЛУЧАЕТЕ, ПУБЛИКУЕТЕ и т.д. запросы могут быть запущены с помощью API. Вы можете получить доступ к подробной информации о сборках, сеансах и туннелях, которые используются в процессе автоматического кроссбраузерного тестирования, используя Selenium Grid.
Например, есть пара выполненных нами автоматизированных тестов, подробную информацию о которых можно просмотреть, перейдя на вкладку Автоматизация на панели навигации слева на LambdaTest и посетив временную шкалу.
Для демонстрации мы выбираем конкретную сборку, например, для использования API автоматизации. Вычисленный URL-адрес имеет следующий формат: https://automation .lambdatest.com/logs/?testID ={test-id}&build={build-id}
Первоначально мы размещаем существующий исходный код для его выполнения в Selenium Grid на Lambda Test . Важное примечание: Вам придется заменить имя_пользователя и app_key с помощью имени пользователя и ключа доступа , которые, как указано выше, присутствуют в Панели управления автоматизацией .
# Import the 'modules' that are required for execution
import pytest
import pytest_html
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from time import sleep
import urllib3
import warnings
#Set capabilities for testing on Chrome
ch_caps = {
"build" : "Testing using Chrome on Windows",
"name" : "Testing on Chrome using Selenium Grid",
"platform" : "Windows 10",
"browserName" : "Chrome",
"version" : "71.0",
"selenium_version" : "3.13.0",
"chrome.driver" : 2.42
}
#Set capabilities for testing on Firefox
ff_caps = {
"build" : "Testing using Firefox on Windows",
"name" : "Testing on Firefox using Selenium Grid",
"platform" : "Windows 10",
"browserName" : "Firefox",
"version" : "64.0",
}
# Details can be sourced from https://automation.lambdatest.com/
user_name = "user-name"
app_key = "access key"
#Fixture for Firefox
@pytest.fixture(params=["chrome", "firefox"],scope="class")
def driver_init(request):
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub"
if request.param == "chrome":
#Remote WebDriver implementation
#web_driver = webdriver.Remote(
#command_executor='http://107.108.86.20:4444/wd/hub',
#desired_capabilities={'browserName': 'chrome', 'javascriptEnabled': True})
web_driver = webdriver.Remote(command_executor=remote_url, desired_capabilities=ch_caps)
if request.param == "firefox":
#Remote WebDriver implementation
#web_driver = webdriver.Remote(
# command_executor='http://107.108.86.20:4444/wd/hub',
# desired_capabilities={'browserName': 'firefox'})
web_driver = webdriver.Remote(command_executor=remote_url, desired_capabilities=ff_caps)
request.cls.driver = web_driver
yield
# web_driver.close()
#print(self.driver.title)
sleep(5)
web_driver.close()
web_driver.quit()
@pytest.mark.usefixtures("driver_init")
class BasicTest:
pass
class Test_URL(BasicTest):
def test_open_url(self):
self.driver.get("https://www.lambdatest.com/")
print(self.driver.title)
sleep(5)
С каждым тестовым сеансом связан уникальный идентификатор Session_ID. Еще одним важным параметром, который необходимо иметь в виду, является Test_ID. С одним TEST_ID может быть связано несколько идентификаторов сеансов. Вам нужно перейти в раздел КОМАНД конкретного теста, чтобы получить Session_ID теста, образец показан ниже:
Чтобы продемонстрировать API-интерфейсы лямбда-тестирования, мы извлекаем информацию о первых 10 сборках со статусом “Завершено”, таймаутом и ошибкой. Для этой цели мы используем “/builds” API. Мы выполняем следующие шаги для достижения нашей цели
- Войдите в справочный документ Lambda Test API, используя Username & Access Ключ, полученный с вашей Панели управления автоматизацией .
- После входа в систему вы должны перейти в раздел Сборки, в котором есть возможность получить информацию, связанную со сборкой/сборками Извлеките все сборки учетной записи и нажмите на кнопку с именем “Попробовать”. Затем введите соответствующие сведения в текстовое поле с названием Limit, т.е. 10, поскольку нам нужна информация о первых 10 сборках, и введите completed, timeout, error в текстовое поле с названием status.
- Нажмите кнопку Выполнить, и вы должны получить результаты в формате JSON. Вам также следует взглянуть на раздел Ответов, в котором показан CURL API, который вы можете использовать в своем коде. Код ответа может быть 200 (успешная операция), 400 (Недопустимое значение идентификатора сеанса) или 401 (Доступ запрещен. Ошибка авторизации.) Ниже приведен скриншот ответа, который мы получили на запрос, который мы выполнили. Ответ сервера равен 200, что означает, что выполнение прошло успешно.
- Вы можете воспользоваться веб-сайтом https://curl.trillworks.com/ для преобразования ответа CURL в эквивалентный код Python. Вы открыты для использования любого другого веб-сайта, который предлагает бесплатную конвертацию, или любого инструмента, который предлагает вам то же самое.
- Теперь, когда у нас есть готовый скелет кода Python, мы вносим соответствующие изменения, чтобы извлечь необходимую информацию из выходных данных JSON, т.е. Напечатать Build_ID и соответствующий статус в терминале. Наряду с извлечением соответствующей информации о сборке мы также изменяем имя сборки для Build_ID 11254. Для того, чтобы сделать то же самое, мы используем
https://api.lambdatest.com/automation/api/v1/builds/{Build_ID}API были. Вам нужно повторить те же шаги (1-4) и для этого требования, чтобы получить эквивалентный код Python для выполнения этой операции.
Ниже приведен окончательный код, который показывает Lambda Test API в действии
# Requirements
# Fetch first 10 builds which have status as completed, error, timeout
# Once the details are out, change the Build Title of the build_id 11254
# Refer https://www.lambdatest.com/support/docs/api-doc/#/Build/builds for more information
import requests
import json
# Equivalent Python code from https://curl.trillworks.com/
headers = {
'accept': 'application/json',
'Authorization': 'Basic aGltYW5zaHUuc2hldGhOVI4bHdCc1hXVFNhSU9lYlhuNHg5',
}
params = (
('limit', '10'),
('status', 'completed,timeout,error'),
)
# Updated build information for build 11254
headers_updated_build = {
'accept': 'application/json',
'Authorization': 'Basic aGltYW5zaHUuc2hldGhOVI4bHdCc1hXVFNhSU9lYlhuNHg5',
'Content-Type': 'application/json',
}
data_updated_build = '{"name":"Updated build details from prompt"}'
response = requests.get('https://api.lambdatest.com/automation/api/v1/builds', headers=headers, params=params)
print(response)
json_arr = response.json()
# Print the build_id matching our requirements and Change build title of build_id 11254
for loop_var in range(10):
build_id = ((json_arr['data'][loop_var])['build_id'])
test_status = ((json_arr['data'][loop_var])['status_ind'])
if build_id == 11254:
response_updated_build = requests.patch('https://api.lambdatest.com/automation/api/v1/builds/11254', headers=headers_updated_build, data=data_updated_build)
print(response_updated_build)
print ((build_id), (test_status))
Ниже приведен скриншот выполнения. Как показано ниже, мы получили ответ в виде 200 двух запросов:
https://api.lambdatest.com/automation/api/v1/builds https://api.lambdatest.com/automation/api/v1/builds/11254
Это указывает на то, что операция прошла успешно.
Чтобы проверить, была ли операция обновления Buildname для Build_ID 11254 успешной, мы переходим в журналы автоматизации LambdaTest и проверяем статус, т.е. https://automation .lambdatest.com/logs/?testID=CKSVC-J7YFC-&build=11254
Вывод
Отчеты Selenium, при эффективном использовании, могут оказать большую помощь в проверке общих действий по тестированию и их результатов. Для генерации отчетов pytest мы можем использовать модуль pytest-html для кроссбраузерного тестирования с помощью Selenium Grid . Информация, представленная в отчетах Selenium, может быть улучшена за счет использования API-интерфейсов Lambda Test, которые предоставляют вам подробную информацию о сборке/сеансе/туннелях для ваших сценариев автоматизации Selenium, выполняемых на сервере LambdaTest.
В зависимости от ваших требований вы можете экспортировать эту информацию в отчет HTML и упростить весь процесс тестирования совместимости браузера . Используя API-интерфейсы Lambda-тестирования, вы можете сократить время, затрачиваемое на автоматизированное тестирование, кросс-браузерное тестирование и ведение отчетов о тестировании, содержащих соответствующую информацию о сборках/выпусках программного обеспечения.
Первоначально опубликовано : Лямбда-тест
Оригинал: “https://dev.to/himanshusheth004/pytest-report-generation-for-selenium-automation-scripts-3i03”