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 состоит из нескольких библиотек, поэтому документация разбита на части:
Системный путь
Перед запуском тестов, нужно убедиться что Python видит все нужные пути. В этой статье вы можете изучить способы для терминала. Про настройку пути в PyCharm вы можете прочитать в статье «Поддержка Robot Framework» в PyCharm
Например, если вы в Windows используете PowerShell и вам нужно добавить Libraries в системный путь - перейдите в директорию Libraries и выполните там
$Env:Path += ';' $Env:Path += $pwd
В Linux эта команда по добавлению текущей директории в PATH выглядит следующим образом
export PATH=$PATH:$(pwd)
--pythonpath
С помощью опции --pythonpath можно добавить директорию в системный путь прямо во время запуска теста
python -m robot --pythonpath .\dir .\dir\Tests\demo.robot
Рассмотрим пример из статьи про добавление своих Python библиотек
keyword_demo/ |-- Libraries | `-- CustomRandom.py `-- Tests `-- demo.robot
Обратите внимание на строку с импортом библиотеки. Без добавления родительской к Libraries директории в путь он работать не будет.
# CustomRandom.py from random import randrange from robot.api.deco import keyword class CustomRandom: @keyword(name="Get Random Int") def get_random_number(self, limit) -> int: return randrange(int(limit))
*** Settings *** Documentation Example that uses external python library Library Libraries.CustomRandom *** Test Cases *** Check Smallest Limit ${number}= Get Random Int 1 Should Be Equal As Integers ${number} 0
python -m robot --pythonpath .\keyword_demo .\keyword_demo\Tests\demo.robot
============================================================================== Demo :: Example that uses external python library ============================================================================== Check Smallest Limit | PASS | ------------------------------------------------------------------------------ Demo :: Example that uses external python library | PASS | 1 test, 1 passed, 0 failed ==============================================================================
Пример
Небольшой пример работы с настроенным фреймворком. Про установку 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
Дата и время
Чтобы получить текущую дату нужно подключить библиотеку DateTime и воспользоваться ключевым словосочетанием Get Current Date
Library DateTime … ${date}= Get Current Date
Формат даты будет выглядеть как
2025-04-27 23:31:51.714
result_format=datetime
Для удобного обращения к атрибутам объекта date
можно воспользоваться аргументом result_format=datetime
Формат даты будет выглядеть как
2025-04-27 23:31:51.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" .2025-04-27 23:31:51.065095 .2025 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
Selenium Library |
RFBrowser |
Автор статьи: Андрей Олегович
Robot Framework | |
Основы | |
Тест логина | |
Пустые поля | |
reStructuredText | |
QuickStart | |
Robot из Python |