Разделы портала

Онлайн-тренинги

.
Создание тестов в Robot Framework, часть 1: начало работы
28.08.2023 00:00

Автор: Баз Дейкстра (Bas Dijkstra)
Оригинал статьи
Перевод: Ольга Алифанова

В этой серии статей я хочу рассмотреть ряд функций Robot Framework – библиотеки автоматизации тестирования с открытым исходным кодом, которую я считаю все еще недооцененной. Мы пошагово построим устойчивый, читабельный и поддерживаемый тест, используя Robot Framework и его библиотеки - Selenium (для тестирования UI) и requests (для тестирования API). В ходе работы вы познакомитесь с наиболее мощными функциями Robot Framework.

Я предлагаю вам писать код по ходу статей, чтобы самостоятельно познакомиться с Robot Framework, но мой код также доступен на on GitHub.

В первой статье мы узнаем, как начать работать с Robot Framework и SeleniumLibrary.

Robot Framework (RFW) иногда называют «швейцарским армейским ножом» тест-автоматизации. Это фреймворк с открытым исходным кодом, который можно применять для создания тестов для широкого спектра приложений, взаимодействующего с различными интерфейсами и технологиями. В примерах из этой серии статей мы сконцентрируемся на создании тестов на уровне графического пользовательского интерфейса и REST API.

Для GUI-тестов мы воспользуемся библиотекой SeleniumLibrary, которая снабжает RFW всей мощью Selenium WebDriver.

Про Robot Framework

Зачем нужна серия статей про RFW? Потому что я считаю, что больше людей должно научиться использовать RFW, и использовать его правильно. Это очень гибкий, на многое способный инструмент, и у него отличное сообщество и даже собственная конференция.

Вместо того, чтобы писать код на Python, в RFW вы пишете тесты, используя ключевые слова в табличном формате. Поэтому начать работать проще, особенно потому, что множество функций доступны «из коробки». У инструмента также множество библиотек, еще больше его усиливающих, и вы можете создавать свои собственные. Все это мы рассмотрим в этой серии.

Предварительные условия

Прежде чем мы начнем, убедитесь, что у вас установлены:

  • Недавняя версия Python, доступная здесь.
  • IDE на ваш выбор. Я использую PyCharm с плагинами Robot Framework Language Server и Robot Framework Support.
  • ChromeDriver, соответствующий вашей версии Chrome, и содержащая его папка добавлена в переменную окружения PATH (он доступен для запуска из любой папки).

Начало работы

Прежде чем начать писать тесты, нам нужно установить RFW и SeleniumLibrary. Обе библиотеки доступны в едином установщике, поэтому вам нужно только запустить

pip install robotframework-seleniumlibrary

Если вы скачивали или клонировали код из репозитория GitHub, относящегося к этой серии статей, можно также запустить

pip install -r requirements.txt

из корневой папки проекта.

Это установит как сам Robot Framework, так и SeleniumLibrary. Пока что это все, что нам нужно, чтобы начать писать тесты!

Создание первого теста в Robot Framework

Robot Framework ожидает, что тесты будут находиться внутри файлов с расширением .robot, поэтому сначала нужно их создать.

Затем в файл нужно добавить ряд обязательных разделов. Начнем с раздела *** Settings ***, где хранятся настройки конфигурации и метаданные файла:

*** Settings ***
Documentation    Applying for a loan at ParaBank
Library          SeleniumLibrary

Строка Documentation содержит описание того, что покроет наш тест. Строка Library делает все ключевые слова SeleniumLibrary доступными в этом .robot-файле. Это очень похоже на конструкцию import в Java или Python.

Затем мы добавим раздел *** Test Cases ***. Тут будут находиться наши кейсы. Кейс – это серия ключевых слов, которые совместно выполняют действия и проверки, из которых состоит тест. Наш тест-пример будет покрывать подачу заявки на займ в онлайн-банке и сравнение результата работы приложения с ожидаемым:

*** Test Cases ***
Applying for a loan with a too low down payment sees the application denied
Open Browser    http://localhost:8080/parabank  Chrome
Maximize Browser Window
Input Text  name:username  john
Input Text  name:password  demo
Click Button  xpath://input[@value='Log In']
Click Link  Request Loan
Input Text  id:amount  10000
Input Text  id:downPayment  100
Select From List By Value  id:fromAccountId  12345
Click Button  xpath://input[@value='Apply Now']
Sleep  3 seconds
${loan_application_result}=  Get Text  id:loanStatus
Should Be Equal As Strings  ${loan_application_result}  Denied
Close Browser

Каждое ключевое слово выполняет действие Selenium:

  • Open Browser создает новый объект драйвера и переходит на конкретный URL.
  • Input Text находит элемент и вводит в него текст – то есть, по сути, вызывает метод send_keys() Selenium.
  • Click Button находит элемент и кликает по нему

И так далее.

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

Также надо отметить, что схожим с обычным Python-программированием образом отступы в тесте очень важны. Это, в частности, значит, что ключевые слова должны быть записаны через отступ (как минимум два пробела), а разделитель между двумя аргументами ключевого слова – тоже как минимум два пробела.

Запуск нашего теста

Теперь, когда наш тест готов, его можно запустить через командную строку:

robot article_01.robot

Примечание: если вы хотите писать код по ходу чтения, пожалуйста, измените URL в первом аргументе ключевого слова Open Browser с http://localhost:8080/parabank на https://parabank.parasoft.com/parabank, чтобы получить доступ к публичной копии веб-приложения, для которого мы пишем тесты.

Тест запустится, и RFW выведет результат в командную строку:


К тому же RFW создаст HTML-отчет, обобщающий результаты теста:


а также детальный, пошаговый лог, где содержатся результаты запуска и детали для всех ключевых слов, вызванных в ходе теста:


Очень симпатично, и все это из коробки!

На этом пока все. Мы разобрались, как установить Robot Framework и начать с ним работать, и написали первый тест для примера веб-приложения, используя SeleniumLibrary.

Как я обещал, в следующей статье мы улучшим надежность нашего теста, внедрив явные ожидания Selenium и создавая свои собственные ключевые слова.

Обсудить в форуме