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

Web UI
Selenium Library
RFBrowser

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

Похожие статьи
Robot Framework
Основы
Тест логина
Пустые поля
reStructuredText
QuickStart
Robot из Python

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: