Robot Framework — open-source фреймворк автоматизации на базе Python, который популяризировал тестирование на основе ключевых слов, делая автоматизацию тестирования доступной благодаря удобочитаемому синтаксису. По данным ежегодного опроса Robot Framework Foundation, Robot Framework имеет более 1,5 миллиона загрузок в месяц и используется в 100+ странах с 34% ростом год к году. По данным исследования Sauce Labs, команды, использующие Robot Framework, сообщают о 50% более высокой скорости создания тестов. Этот туториал охватывает Robot Framework от установки до интеграции CI/CD.
TL;DR
- Robot Framework использует keyword-driven подход — читаемые тесты без программирования
- Тесты пишутся в табличном формате (plain text, .robot файлы)
- SeleniumLibrary для веб-тестирования, RequestsLibrary для API
- Создавай кастомные keywords для инкапсуляции сложной логики
- Встроенная отчётность и интеграция с CI/CD
Идеально для: Команд со смешанными техническими навыками, приёмочного тестирования, RPA Пропусти, если: Нужна максимальная гибкость (используй Python/pytest напрямую) Время чтения: 15 минут
Твоя команда включает ручных тестировщиков, которые не программируют. Менеджменту нужны читаемые отчёты о тестах. Тесты должны поддерживаться не-разработчиками.
Robot Framework решает эту задачу. Тесты пишутся на простом английском с keywords. Любой может их прочитать. Разработчики могут их расширять. Отчёты генерируются автоматически.
Этот туториал покрывает Robot Framework от установки до интеграции с CI/CD — всё для keyword-driven автоматизации тестирования.
Что такое Robot Framework?
Robot Framework — это универсальный open-source фреймворк для автоматизации приёмочного тестирования, acceptance test-driven development (ATDD) и robotic process automation (RPA). Он использует keyword-driven подход, где тесты пишутся в человекочитаемом табличном формате.
Почему Robot Framework:
- Читаемый синтаксис — тесты выглядят как естественный язык
- Легко изучить — непрограммисты могут писать тесты
- Расширяемый — Python/Java библиотеки расширяют функциональность
- Встроенная отчётность — HTML-отчёты генерируются автоматически
- Большая экосистема — библиотеки для веб, API, мобильных, десктопных приложений
“Robot Framework’s keyword-driven approach is the best bridge between business and engineering. Non-technical stakeholders can read test cases while developers extend functionality in Python — everyone works in their language.” — Yuri Kan, Senior QA Lead
Установка
Инсталляция
# Установка Robot Framework
pip install robotframework
# Установка SeleniumLibrary для веб-тестирования
pip install robotframework-seleniumlibrary
# Установка RequestsLibrary для API-тестирования
pip install robotframework-requests
# Установка Browser Library (Playwright-based альтернатива)
pip install robotframework-browser
rfbrowser init
# Проверка установки
robot --version
Структура проекта
project/
├── tests/
│ ├── login_tests.robot
│ ├── api_tests.robot
│ └── __init__.robot
├── resources/
│ ├── keywords.robot
│ ├── variables.robot
│ └── pages/
│ └── login_page.robot
├── results/
└── requirements.txt
Базовый синтаксис
Первый тест
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${BROWSER} chrome
${URL} https://example.com
*** Test Cases ***
User Can Open Homepage
Open Browser ${URL} ${BROWSER}
Title Should Be Example Domain
Close Browser
User Can Search For Products
Open Browser ${URL} ${BROWSER}
Input Text id=search robot framework
Click Button id=search-btn
Page Should Contain Results
Close Browser
Объяснение секций
| Секция | Назначение |
|---|---|
*** Settings *** | Библиотеки, ресурсы, setup/teardown |
*** Variables *** | Тестовые данные и конфигурация |
*** Test Cases *** | Фактические тестовые сценарии |
*** Keywords *** | Кастомные переиспользуемые keywords |
SeleniumLibrary для веб-тестирования
Распространённые Keywords
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Web Interaction Examples
# Навигация
Open Browser https://example.com chrome
Go To https://example.com/login
# Ввод
Input Text id=username testuser
Input Password id=password secret123
# Клики
Click Button id=submit
Click Element xpath=//a[@class='link']
Click Link Home
# Проверки
Page Should Contain Welcome
Page Should Contain Element id=dashboard
Element Should Be Visible class=success-message
Element Text Should Be id=greeting Hello User
# Ожидания
Wait Until Element Is Visible id=loading timeout=10s
Wait Until Page Contains Dashboard
# Получение значений
${text}= Get Text id=message
${value}= Get Value id=input-field
${attr}= Get Element Attribute id=link href
Close Browser
Setup и Teardown
*** Settings ***
Library SeleniumLibrary
Suite Setup Open Browser ${URL} ${BROWSER}
Suite Teardown Close All Browsers
Test Setup Go To ${URL}
Test Teardown Capture Page Screenshot
*** Variables ***
${URL} https://example.com
${BROWSER} chrome
*** Test Cases ***
Test One
# Браузер уже открыт из Suite Setup
Page Should Contain Welcome
Test Two
# Свежая загрузка страницы из Test Setup
Click Link About
Page Should Contain About Us
Кастомные Keywords
Создание Keywords
*** Settings ***
Library SeleniumLibrary
*** Keywords ***
Login With Credentials
[Arguments] ${username} ${password}
Input Text id=username ${username}
Input Password id=password ${password}
Click Button id=login-btn
Wait Until Page Contains Element id=dashboard
Logout
Click Element id=user-menu
Click Link Logout
Wait Until Page Contains Login
Verify Dashboard Loaded
Page Should Contain Element id=dashboard
Element Should Be Visible id=welcome-message
Page Should Not Contain Error
*** Test Cases ***
Successful Login
Open Browser https://example.com/login chrome
Login With Credentials user@example.com password123
Verify Dashboard Loaded
Logout
Close Browser
Keywords с возвратом значений
*** Keywords ***
Get User Name From Dashboard
${name}= Get Text id=user-name
[Return] ${name}
Create User And Get ID
[Arguments] ${name} ${email}
Input Text id=name ${name}
Input Text id=email ${email}
Click Button id=create
Wait Until Page Contains Element id=user-id
${id}= Get Text id=user-id
[Return] ${id}
*** Test Cases ***
Verify User Creation
Open Browser ${URL} chrome
${user_id}= Create User And Get ID John Doe john@example.com
Should Not Be Empty ${user_id}
Log Created user with ID: ${user_id}
Close Browser
Паттерн Page Object
Page Resource File
# resources/pages/login_page.robot
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${LOGIN_URL} https://example.com/login
${USERNAME_FIELD} id=username
${PASSWORD_FIELD} id=password
${LOGIN_BUTTON} id=login-btn
${ERROR_MESSAGE} class=error-msg
${DASHBOARD} id=dashboard
*** Keywords ***
Navigate To Login Page
Go To ${LOGIN_URL}
Enter Username
[Arguments] ${username}
Input Text ${USERNAME_FIELD} ${username}
Enter Password
[Arguments] ${password}
Input Password ${PASSWORD_FIELD} ${password}
Click Login Button
Click Button ${LOGIN_BUTTON}
Login Should Succeed
Wait Until Page Contains Element ${DASHBOARD} timeout=10s
Login Should Fail With Message
[Arguments] ${expected_message}
Element Should Be Visible ${ERROR_MESSAGE}
Element Text Should Be ${ERROR_MESSAGE} ${expected_message}
Login As User
[Arguments] ${username} ${password}
Navigate To Login Page
Enter Username ${username}
Enter Password ${password}
Click Login Button
Использование Page Objects
*** Settings ***
Library SeleniumLibrary
Resource resources/pages/login_page.robot
Suite Setup Open Browser ${URL} ${BROWSER}
Suite Teardown Close All Browsers
*** Variables ***
${URL} https://example.com
${BROWSER} chrome
*** Test Cases ***
Valid Login
Login As User user@example.com password123
Login Should Succeed
Invalid Password
Login As User user@example.com wrongpassword
Login Should Fail With Message Invalid credentials
Data-Driven Testing
Test Templates
*** Settings ***
Library SeleniumLibrary
Test Template Login Should Fail For Invalid Credentials
*** Test Cases *** USERNAME PASSWORD ERROR
Empty Username ${EMPTY} password123 Username required
Empty Password user@example.com ${EMPTY} Password required
Invalid Email Format invalid-email password123 Invalid email format
Wrong Password user@example.com wrongpass Invalid credentials
*** Keywords ***
Login Should Fail For Invalid Credentials
[Arguments] ${username} ${password} ${expected_error}
Open Browser https://example.com/login chrome
Input Text id=username ${username}
Input Password id=password ${password}
Click Button id=login
Element Text Should Be class=error ${expected_error}
Close Browser
API-тестирование
*** Settings ***
Library RequestsLibrary
Library Collections
*** Variables ***
${BASE_URL} https://jsonplaceholder.typicode.com
*** Test Cases ***
Get All Users
Create Session api ${BASE_URL}
${response}= GET On Session api /users
Status Should Be 200 ${response}
${users}= Set Variable ${response.json()}
Length Should Be ${users} 10
Create New Post
Create Session api ${BASE_URL}
${body}= Create Dictionary title=Test Post body=Content userId=1
${response}= POST On Session api /posts json=${body}
Status Should Be 201 ${response}
${post}= Set Variable ${response.json()}
Should Be Equal ${post['title']} Test Post
Delete Post
Create Session api ${BASE_URL}
${response}= DELETE On Session api /posts/1
Status Should Be 200 ${response}
Интеграция с CI/CD
GitHub Actions
name: Robot Framework Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install robotframework robotframework-seleniumlibrary
- name: Run tests
run: |
robot --outputdir results tests/
- name: Upload results
uses: actions/upload-artifact@v4
if: always()
with:
name: robot-results
path: results/
Запуск тестов
# Запуск всех тестов
robot tests/
# Запуск конкретного файла
robot tests/login_tests.robot
# Запуск с тегами
robot --include smoke tests/
robot --exclude slow tests/
# Запуск с переменными
robot --variable BROWSER:firefox --variable URL:https://staging.example.com tests/
# Вывод в конкретную директорию
robot --outputdir results tests/
Robot Framework с помощью ИИ
ИИ-инструменты могут помочь писать и поддерживать Robot Framework тесты.
Что ИИ делает хорошо:
- Генерация keywords из user stories
- Создание вариаций тестовых данных
- Конвертация ручных тест-кейсов в Robot-синтаксис
- Предложение library keywords
Что всё ещё требует людей:
- Понимание бизнес-требований
- Проектирование тестовой архитектуры
- Отладка сложных падений
- Поддержка page objects
FAQ
Что такое Robot Framework?
Robot Framework — это Python-based open-source фреймворк для автоматизации, использующий keyword-driven подход. Тесты пишутся в читаемом табличном формате, который выглядит как естественный язык, делая их доступными для непрограммистов. Он поддерживает веб, API, мобильное и десктопное тестирование через различные библиотеки.
Robot Framework бесплатный?
Да, Robot Framework полностью бесплатен и open-source под лицензией Apache 2.0. Все стандартные библиотеки (SeleniumLibrary, RequestsLibrary и т.д.) тоже бесплатны. Нет платных версий или enterprise-функций — всё доступно бесплатно.
Robot Framework vs Selenium — в чём разница?
Robot Framework — это фреймворк для автоматизации тестирования, предоставляющий структуру и синтаксис для написания тестов. Selenium — это библиотека для браузерной автоматизации. Robot Framework использует SeleniumLibrary (обёртку вокруг Selenium) для выполнения автоматизации веб-браузера. Думай о Robot Framework как о тестовом фреймворке, а о Selenium как о браузерном драйвере.
Может ли Robot Framework тестировать API?
Да, Robot Framework может тестировать REST API с помощью RequestsLibrary. Ты можешь делать HTTP-запросы (GET, POST, PUT, DELETE), проверять статус-коды ответов, парсить JSON-ответы и валидировать данные.
Подходит ли Robot Framework для начинающих?
Да. Keyword-driven синтаксис читается как обычный английский, поэтому ручные тестировщики и бизнес-аналитики могут писать и понимать тесты без навыков программирования. Кривая обучения значительно ниже, чем у pytest или JUnit. Начни со встроенных keywords, затем постепенно создавай кастомные. Большинство команд становятся продуктивными за неделю.
Как Robot Framework сравнивается с Playwright и Cypress?
Robot Framework — это универсальный фреймворк, поддерживающий веб, API, мобильное и десктопное тестирование через подключаемые библиотеки. Playwright и Cypress — специализированные браузерные инструменты с более быстрым выполнением и лучшим developer experience для веб-тестирования. Выбирай Robot Framework когда нужно мультиплатформенное тестирование, нетехнические участники команды пишут тесты, или приёмочное тестирование с бизнес-читаемыми отчётами. Выбирай Playwright/Cypress когда фокус исключительно на веб-UI тестировании и команда ориентирована на разработчиков.
Официальные ресурсы
Смотрите также
- Robot Framework vs Selenium - детальное сравнение обоих инструментов
- Selenium Tutorial для начинающих - основы браузерной автоматизации
- Playwright Tutorial - современная альтернатива для браузерного тестирования
- Cucumber BDD Tutorial - behavior-driven development с Gherkin
- BDD: от требований к автоматизации - полное руководство по BDD
- pytest Tutorial: тестирование на Python - фреймворк для автоматизации на Python
- Архитектура тестирования API в микросервисах - паттерны тестирования REST API
- API Testing Tutorial: Полное руководство - введение в тестирование API
- Allure Framework Reporting - продвинутая отчётность о тестах
- CI/CD Pipeline Optimization для QA - интеграция тестов в пайплайны
