Robot Framework Основы
Введение
Robot Framework — фреймворк для разработки приемочных автотестов (ATDD).
Это keyword-driven testing фреймворк, который предоставляет табличное форматирование
Основные идеи для создания Robot Framework были отражены в магистерской диссертации Пекки Клярка (Pekka Klärck) в 2005 году.
Первая версия была разработана Nokia Siemens Networks в том же году. Версия 2.0 была издана под открытой лицензией Apache License 24 июня 2008 года.
Фреймворк написан на языке
Python.
О том, что фреймворк финский можно догадаться по некоторым пасхалкам, например в библиотеке
OperatingSystem
можно найти текст Hyv\xe4 esimerkki, что в переводе с
финского языка
означает хороший пример
Документация
RobotFramework состоит из нескольких библиотек, поэтому документация разбита на части:
Пример
Небольшой пример работы с настроенным фреймворком. Про установку RobotFramework читайте здесь
Зайдите в директорию с тестами
cd /soft/src/tests/robot
В этой директории могут лежать
Makefile
,
Dockerfile
различные файлы из которых берутся данные для создания тестовых
окружений и так далее.
Это обычно настраивает DevOps
или QA Team Lead
ls -la
total 70 drwxr-xr-x 8 andrei urn_su 4096 Mar 9 12:15 . drwxr-xr-x 9 andrei urn_su 4096 Mar 9 17:45 .. drwxr-xr-x 2 andrei urn_su 4096 Mar 9 12:15 bin -rw-r--r-- 1 andrei urn_su 1534 Mar 9 12:15 Dockerfile -rw-r--r-- 1 andrei urn_su 1293 Mar 9 12:15 Dockerfile.alpine -rw-r--r-- 1 andrei urn_su 38 Mar 9 12:15 .dockerignore drwxr-xr-x 2 andrei 111 4096 Mar 9 12:15 input -rw-r--r-- 1 andrei urn_su 13586 Mar 9 12:15 Makefile drwxr-xr-x 2 andrei 111 4096 Mar 9 12:15 output -rw-r--r-- 1 andrei urn_su 0 Mar 9 12:15 README.md drwxr-xr-x 2 andrei urn_su 4096 Mar 9 12:15 requirements drwxr-xr-x 2 andrei urn_su 4096 Mar 9 12:15 scripts drwxr-xr-x 8 andrei 111 4096 Mar 9 12:15 src
В данном примере чтобы создать тестовое окружение нужно выполнить
make dev
Подробнее про make читайте в статье «Работа с GNUmakefile»
Когда окружение активно можно начать пользоваться роботом.
Для вызова
справки выполните
robot --help
seleniumlibrary
python -m pip install robotframework-seleniumlibrary
Collecting robotframework-seleniumlibrary Downloading robotframework_seleniumlibrary-5.1.3-py2.py3-none-any.whl (94 kB) |████████████████████████████████| 94 kB 1.6 MB/s Collecting selenium>=3.141.0 Downloading selenium-3.141.0-py2.py3-none-any.whl (904 kB) |████████████████████████████████| 904 kB 51.5 MB/s Collecting robotframework-pythonlibcore>=2.1.0 Downloading robotframework_pythonlibcore-2.2.1-py2.py3-none-any.whl (10 kB) Requirement already satisfied: robotframework>=3.1.2 in /home/andrei/robotframework/myvenv/lib/python3.9/site-packages (from robotframework-seleniumlibrary) (4.0.1) Collecting urllib3 Using cached urllib3-1.26.4-py2.py3-none-any.whl (153 kB) Installing collected packages: urllib3, selenium, robotframework-pythonlibcore, robotframework-seleniumlibrary Successfully installed robotframework-pythonlibcore-2.2.1 robotframework-seleniumlibrary-5.1.3 selenium-3.141.0 urllib3-1.26.4
QuickStart
Официальное руководство для быстрого старта в RobotFramework можно
клонировать
с github
Документация
git clone https://github.com/robotframework/QuickStartGuide.git
cd QuickStartGuide
ll
drwxr-xr-x 5 andrei urnsu 4096 May 5 11:25 ./ drwxr-xr-x 5 andrei urnsu 4096 May 5 11:25 ../ -rw-r--r-- 1 andrei urnsu 796 May 5 11:25 BUILD.rst drwxr-xr-x 8 andrei urnsu 4096 May 5 11:25 .git/ drwxr-xr-x 2 andrei urnsu 4096 May 5 11:25 lib/ -rw-r--r-- 1 andrei urnsu 21237 May 5 11:25 QuickStart.rst -rw-r--r-- 1 andrei urnsu 359 May 5 11:25 README.rst drwxr-xr-x 2 andrei urnsu 4096 May 5 11:25 sut/
Проект для тестирования логина находится в директории
sut
Скрипт называется
login.py
python sut/login.py create andrei HeiHeiru1
SUCCESS
python sut/login.py login andrei HeiHeiru1
Logged In
robot QuickStart.rst
============================================================================== QuickStart ============================================================================== User can create an account and log in | PASS | ------------------------------------------------------------------------------ User cannot log in with bad password | PASS | ------------------------------------------------------------------------------ User can change password | PASS | ------------------------------------------------------------------------------ Invalid password | PASS | ------------------------------------------------------------------------------ User status is stored in database | PASS | ------------------------------------------------------------------------------ QuickStart | PASS | 5 tests, 5 passed, 0 failed ============================================================================== Output: /home/andrei/robotframework/QuickStartGuide/output.xml Log: /home/andrei/robotframework/QuickStartGuide/log.html Report: /home/andrei/robotframework/QuickStartGuide/report.html
Пример теста с Selenium WebDriver
Особенность синтаксиса Robot Framework заключается в том, что, между ключевым словом
и значением нужно ставить два пробела.
Например, между Library и SeleniumLibrary нужно ставить два пробела.
Создадим простой тест в файле
GoogleSearch.robot
*** Settings ***
Documentation Simple example using SeleniumLibrary.
Library SeleniumLibrary
*** Variables ***
*** Test Cases ***
This is sample test case
[documentation] Google test
[tags] regression
Open Browser http://www.google.com chrome
Close Browser
*** Keywords ***
robot -d results Tests/Google/FunctionalTestSuite/GoogleSearch.robot
============================================================================== GoogleSearch :: Simple example using SeleniumLibrary. ============================================================================== This is sample test case :: Google test DevTools listening on ws://127.0.0.1:64096/devtools/browser/b2618042-f0b5-4e41-976f-106fdd21d9v0 This is sample test case :: Google test | PASS | ------------------------------------------------------------------------------ GoogleSearch :: Simple example using SeleniumLibrary. | PASS | 1 test, 1 passed, 0 failed ============================================================================== Output: /home/andrei/robotframework/RobotFWTutorial/results/output.xml Log: /home/andrei/robotframework/RobotFWTutorial/results/log.html Report: /home/andrei/robotframework/RobotFWTutorial/results/report.html
firefox Results/report.html
Более детальный отчёт находится в log.html
Дата и время
Чтобы получить текущую дату нужно подключить библиотеку DateTime и воспользоваться ключевым словосочетанием Get Current Date
Library DateTime … ${date}= Get Current Date
Формат даты будет выглядеть как
2024-09-13 15:41:31.714
result_format=datetime
Для удобного обращения к атрибутам объекта date
можно воспользоваться аргументом result_format=datetime
Формат даты будет выглядеть как
2024-09-13 15:41:31.918613
Чтобы получить месяц или год, достаточно указать атрибут как ${date.month} или ${date.year}
Library DateTime … ${date}= Get Current Date result_format=datetime
Пример из моего бесплатного тренажёра : проверка корректности заголовка страницы, год в которой должен совпадать с текущим.
*** Settings *** Documentation Checking Title Library Browser ... enable_playwright_debug=${True} ... auto_closing_level=TEST ... retry_assertions_for=0:00:03 Library Collections Library DateTime Force Tags ui *** Variables *** *** Keywords *** Test Setup Tasks Start Chromium Browser Test Teardown Tasks Close Browser Start Chromium Browser New Browser browser=chromium headless=True New Context viewport={'width': 1920, 'height': 1080} ignoreHTTPSErrors=True *** Test Cases *** Italy [Tags] italy New Page https://www.urn.su/ui/basic_test/ ${urls}= Get Elements //a[@class="march8"] # depends on Collections lib Log ${urls} ${url0}= Get From List ${urls} 0 Click ${url0} ${date}= Get Current Date result_format=datetime Log To Console "Check dates" Log To Console ${date} Log To Console ${date.year} Get Title == 8 марта в Италии в ${date.year} году Close Browser
robot --include italy src/tests/ui/
============================================================================== Ui ============================================================================== Ui.Ui Test Page :: Checking Title ============================================================================== Italy ......"Check dates" .2023-01-03 09:56:18.065095 .2023 Italy Italy | PASS | ------------------------------------------------------------------------------ Ui.Ui Test Page :: Checking Title | PASS | 1 test, 1 passed, 0 failed ============================================================================== Ui | PASS | 1 test, 1 passed, 0 failed ============================================================================== Output: /opt/tests/robot/output.xml Log: /opt/tests/robot/log.html Report: /opt/tests/robot/report.html
Robot Framework | |
Основы | |
Тест логина | |
Пустые поля |