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

Учебное пособие на Pytest: выполнение нескольких тестовых случаев из одного файла

По мере увеличения количества функций в веб-приложении тесты автоматизации селена также Graduall … Tagged Pteged Pteest, Python, Selenium, Automation.

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

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

В этой части серии SELENIUM PYTHON Учебник, я посмотрю на следующие области, связанные с автоматическим тестированием браузера с Pтойской структурой

Примечание: Это не должно быть путать с параллельным тестированием, темой, которая будет покрыта позже в руководстве Python.

Как создать Pteest Project для запуска нескольких тестовых случаев из одного файла?

Первое, во-первых, при названии ваших тестовых файлов в Python Pytest Framework, вам необходимо убедиться, что имена файлов начинаются или заканчиваются с _test. Даже методы испытаний должны начинаться с теста * Иначе эти методы испытаний будут игнорироваться при выполнении скрипта автоматизации тестирования SELENIUM.

Если вы хотите узнать больше о том, как начать работу с Pтойцами, вы можете обратиться к нашему предыдущему учебнику Selenium Python.

Чтобы начать с демонстрации для этого учебного пособия Python Selenium, я создаю простую структуру папки, которая содержит две подпапки (Test_1, Test_2), каждый из которых содержит один файл Python Pytest (test_cross_browser_1.py, test_cross_browser_2.py).

Ниже показана подробная структура каталога для запуска нескольких тестовых случаев в Python с Pтойцей:

Корневая папка (тест)

Подпапки, содержащие тесты

Реализация теста в обоих тестовых файлах для этого учебника Selenium Python практически одинакова, кроме имени метода и дополнительных маркеров, которые были до начала каждого метода теста. Мы бы коснулись маркеров Pтоиды в последующих разделах. Тестовые случаи для автоматизации тестирования Selenium ниже:

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

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

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

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

Выполнение

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

#Sample_to_do_app for Selenium test automation with Python in pytest for multiple test cases in python with pytest
import pytest
from selenium import webdriver
import sys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
from time import sleep

@pytest.mark.lambdatest1_1
def test_lambdatest1_1():
    chrome_driver = webdriver.Chrome()

    chrome_driver.get('https://lambdatest.github.io/sample-todo-app/')
    chrome_driver.maximize_window()

    chrome_driver.find_element_by_name("li1").click()
    chrome_driver.find_element_by_name("li2").click()

    title = "Sample page - lambdatest.com"
    assert title == chrome_driver.title

    sample_text = "Happy Testing at LambdaTest"
    email_text_field = chrome_driver.find_element_by_id("sampletodotext")
    email_text_field.send_keys(sample_text)
    time.sleep(5)

    chrome_driver.find_element_by_id("addbutton").click()
    time.sleep(5)

    output_str = chrome_driver.find_element_by_name("li6").text
    sys.stderr.write(output_str)

    time.sleep(2)
    chrome_driver.close()

@pytest.mark.lambdatest1_2
def test_lambdatest1_2():
    chrome_driver = webdriver.Chrome()

    chrome_driver.get('https://www.google.com/')
    chrome_driver.maximize_window()

    title = "Google"
    assert title == chrome_driver.title

    search_text = "LambdaTest"
    search_box = chrome_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 = chrome_driver.find_element_by_xpath("//h3[.='LambdaTest: Cross Browser Testing Tools | Free Automated ...']")
    lt_link.click()

    time.sleep(10)
    assert title == chrome_driver.title

    chrome_driver.close()

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

#Automated browser testing for Selenium test automation with Python in pytest multiple test cases in python with pytest
import pytest
from selenium import webdriver
import sys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
from time import sleep

@pytest.mark.lambdatest2_1
def test_lambdatest2_1():
    .........................
@pytest.mark.lambdatest2_2
def test_lambdatest2_2():
    .........................
    .........................
    chrome_driver.close() 

Код прохождения

Шаг 1 – Чтобы начать, мы импортируем все необходимые пакеты Python.

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

Шаг 2 – Правильное название теста дано методу, в зависимости от того, присутствует ли он в Test_Cross_Browser_1.py или test_cross_browser_2.py. Ниже приведены методы испытаний для Test_Cross_Browser_1.py и test_cross_browser_2.py для этого учебного пособия Selenium Python соответственно.

@pytest.mark.lambdatest1_1
def test_lambdatest1_1()
...........................
...........................
@pytest.mark.lambdatest1_2
def test_lambdatest1_2()
...........................
...........................
@pytest.mark.lambdatest2_1
def test_lambdatest2_1()
...........................
...........................
@pytest.mark.lambdatest2_2
def test_lambdatest2_2()
...........................
...........................

Шаг 3 – Фактическая реализация испытаний добавляется к соответствующим методам. Мы не будем разглашать небольшие детали реализации тестирования, поскольку этот учебный учебник Selenium Python фокусируется на аспектах исполнения.

Для скриптов автоматизации тестирования Selenium экземпляр из Chrome Webdriver создается в начале. Детали соответствующих веб-элементов получают с использованием функции проверки, доступной в браузере Chrome.

Как только веб-элементы расположены, соответствующие методы Selenium [find_element_by_name (), find_element_by_id ()] и необходимые операции [i.e. Нажмите (), отправьте (), send_keys () и т. Д.] Проводятся на этих элементах.

#Run multiple test cases in python with pytest
@pytest.mark.lambdatest1_1
def test_lambdatest1_1():
    chrome_driver = webdriver.Chrome()

    chrome_driver.get('https://lambdatest.github.io/sample-todo-app/')
    chrome_driver.maximize_window()

    chrome_driver.find_element_by_name("li1").click()
    chrome_driver.find_element_by_name("li2").click()
    .........................
    .........................
    chrome_driver.find_element_by_id("addbutton").click()
    sleep(5)

    output_str = chrome_driver.find_element_by_name("li6").text
    .........................
    chrome_driver.close()

@pytest.mark.lambdatest1_2
def test_lambdatest1_2()
    chrome_driver = webdriver.Chrome()

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

    .........................
    search_box.send_keys(Keys.ARROW_DOWN)
    search_box.send_keys(Keys.ARROW_UP)
    time.sleep(2)
    search_box.send_keys(Keys.RETURN)

    .........................
    lt_link.click()

    .........................
    chrome_driver.close()

Шаг 4 – Экземпляр Webdriver Chrome закрыт после каждого чехола автоматизации тестирования Selenium, чтобы ресурсы, использованные во время фазы тестирования.

chrome_driver.close()

Как запустить несколько тестовых случаев из одиночных и нескольких файлов с Python в Pytest?

Чтобы выполнить реализацию теста со всех файлов в папке и подпапках, мы впервые переключаемся в корневую папку (I.E. Test), Post, который мы просто выполняем следующую команду на терминале:

pytest --verbose --capture=no

Эта команда будет перемещаться к каждой подпапке и выполнять тесты в файлах, которые начинаются с test_ или заканчиваются с _test. В сценарии автоматизации тестирования Selenium, упомянутые выше, команда будет полностью выполнена из четырех тестов, коллективно расположенных в Test_Cross_Browser_1.py и test_cross_browser_2.py

Вот снимка исполнения, в котором мы видим, что все четыре теста выполняются и пройдены.

Чтобы выполнить тесты, расположенные в определенном файле (например, test_1 \ test_cross_browser_1.py ), команда py.test выполняется из терминала.

Вы можете обратиться к документации Lambdatest, чтобы запустить скрипты Pтойца, используя платформу лямбдатестра. Если вы хотите изучить другие Python Frameworks для Selenium, вы можете проверить наш блог на вершине Python Testing Frameworks Для автоматизации тестирования Selenium в 2020 году.

Бег подмножества определенного теста с Python В Pтойте

При выполнении автоматизации тестирования Selenium с Ptyest вы можете столкнуться с случаями, когда вы не хотите выполнять все тесты, присутствующие в тестовой папке I.E. Только подмножество тестов необходимо выполнить. Функция особенно полезна, когда тестовый файл содержит ряд тестов, и необходимо выполнить только несколько тестов.

Существует два способа, в которых подмножество тестов может быть выполнено в Pтостесте.

Использование пользовательских маркеров в Python Pytest

В PyTest, Pytest.mark Helper используется для установки метаданных на тестовые функции. Некоторые из встроенных маркеров в Pтойте пропускаются, XFail, Skipif и параметризованные. Помимо этих встроенных маркеров, PteSt также позволяет создавать пользовательские маркеры, которые могут быть применены к классам тестирования или модулей.

Пользовательские маркеры могут быть добавлены в тестовые имена, используя:

@pytest.mark.

В текущем примере мы определяем четыре маркера на методах испытаний, и те же маркеры должны быть зарегистрированы в Pytest.ini, который присутствует в каталоге root (I.e. Test).

@pytest.mark.lambdatest1_1
def test_lambdatest1_1()
...........................
...........................
@pytest.mark.lambdatest1_2
def test_lambdatest1_2()
...........................
...........................
@pytest.mark.lambdatest2_1
def test_lambdatest2_1()
...........................
...........................
@pytest.mark.lambdatest2_2
def test_lambdatest2_2()
...........................

Пользовательские маркеры должны быть зарегистрированы в файле pytest.ini. Если регистрация не сделана, ошибка (вы можете зарегистрировать пользовательские знаки, чтобы избежать этого предупреждения – для получения подробной информации см. (https://docs.pytest.org/en/latest/mark.html ) отображается и выполнение не проходит.

Чтобы избежать вышеуказанной ошибки, пользовательские маркеры должны быть зарегистрированы в Pytest.ini, которые должны присутствовать в папке, откуда вы планируете выполнить выполнение I.E. Тестовая папка в нашем случае. Подробнее о пользовательских маркерах в Pтойте доступны в Официальная документация Pтойца Отказ

Ниже приведены содержимое Pytest.ini, где маркеры добавляются под маркеры. Все после толстой кишки (:) – необязательное описание.

# content of pytest.ini
[pytest]
markers =
   lambdatest1_1: test_1 for ToDoApp
   lambdatest1_2: test_1 for Google Search
   lambdatest2_1: test_2 for ToDoApp
   lambdatest2_2: test_2 for Google Search

Пользовательские маркеры также могут быть использованы плагинами. Эти маркеры также используются для избирательного выбора тестов для выполнения через опцию командной строки -M (вместе с помощью команды py.test).

py.test -m 

Для выполнения методов, определенных под пользовательскими маркерами LAMBDATESTEST1_1 и LAMBDATEST2_2, на терминале выполняются следующие команды (в разных клеммах, поскольку тесты выполняются последовательно).

py.test -v -m lambdatest1_1
py.test -v -m lambdatest2_2

Ниже приведено снимок выполнения сценариев автоматизации испытаний селена.

Группировка тестов путем полного или частичного сопоставления выражения подстроки с Python в Pтой

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

Строка, подлежащая сопоставленной (I.e. Substring), передается через опцию -k, доступную с помощью команды py.test.

py.test -v -k 

-K ‘не test_method’ соответствует этим методам теста, которые не содержат Test_Method в их именах.

py.test -v -k not 

Ниже приведены ниже в этом уроке Selenium Python – это подробное описание с командой Py.test -help.

Чтобы выполнить методы испытаний, для запуска нескольких тестовых случаев в Python с Pтойцами, который содержит lambdatest в имени метода, мы выполняем следующую команду на терминале.

py.test -k lambdatest --verbose

Методы испытаний test_lambdatest1_1 (), test_lambdatest1_2 (), test_lambdatest2_1 () и test_lambdatest2_2 (), присутствующие в test_1 \ test_cross_browser_1.py и test_2 \ test_cross_browser_2.py содержат необходимую подстроку. Следовательно, все четыре метода тестовых методов пропускают несколько тестовых случаев в Python с A Pтоицевым серийным способом. Ниже показано, что моментальный снимок выполнения:

Ударяя это!

В этой статье текущего серии учебника Selenium Python я посмотрел на разные сценарии исполнения, где вы можете запустить несколько тестовых чехлов в Python с Pтойным из одного файла. Команда Py.test, когда выполняется в папке, выполняет действительные методы испытаний, присутствующих в папке (и его подпапки).

Сценарии Python Pytest были использованы для выполнения автоматизации тестирования Selenium на Lambdatest TodoApp и поиска Google, используя Chromedriver Selenium. Выборочное исполнение методов испытаний в Python Pytest может быть достигнуто путем сопоставления подстроки и использованием пользовательских маркеров. Пользовательские маркеры должны быть зарегистрированы в Pytest.ini еще маркеры не будут признаны во время выполнения.

Это приносит конец этому учебнику Selenium Python! Поделитесь этой статьей со своими сверстниками, которые хотели бы узнать, как запустить несколько тестовых случаев в Python с Pтой. Retweet всегда приветствуется! Это все люди. Счастливое тестирование !!! 😊

Оригинал: “https://dev.to/himanshusheth004/pytest-tutorial-executing-multiple-test-cases-from-single-file-58pb”