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

Формат даты будет выглядеть как

2026-11-07 19:42:26.714

result_format=datetime

Для удобного обращения к атрибутам объекта date можно воспользоваться аргументом result_format=datetime

Формат даты будет выглядеть как

2026-11-07 19:42:26.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" .2026-11-07 19:42:26.065095 .2026 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

Web UI
RFBrowser

Автор статьи: Андрей Олегович