Как установить robot framework

Обновлено: 04.07.2024

Robot FrameworkЯвляется структурой автоматизированного тестирования общих приемочных испытаний и приемо-сдаточных испытаний. Он имеет простой в использовании синтаксис табличных тестовых данных и использует метод тестирования на основе ключевых слов. Его возможности обнаружения могут быть расширены Python или Java через библиотеку тестов, и пользователи могут использовать тот же синтаксис для создания новых высокоуровневых ключевых слов для создания тестовых случаев.

RIDEОдин дляRobot FrameworkРедактор для тестовых данных.

  1. Выберите Python 2, не выбирайте Python 3, потому что RIDE не поддерживает Python 3
  2. Python 2.6 является самой низкой поддерживаемой версией RIDE, но Robot Framework планирует больше не поддерживать Python 2.6 в версии 3.1, поэтому рекомендуется выбрать Python 2.7 или выше.
  3. RIDE GUI использоватьwxPythonИнструментарий реализован. Только wxPython 2.8.12.1 с Unicode официально поддерживается RIDE. Новая версия в серии 2.8, вероятно, должна хорошо работать с wxPython.

Кроме того, необходимо выяснить, какие тестовые библиотеки необходимы для тестируемой системы.

1. Тестируйте веб-приложения. Тогда вам может понадобиться SeleniumLibrary Или Selenium2Library 。

2. Проверить базу данных? Python с участием Java Есть соответствующие тестовые библиотеки базы данных.

3. Проверить SSH / SFTP? Тогда вам может понадобиться SSHLibrary 。

Этот список может продолжать отображаться в зависимости от потребностей теста.

2. Настройка среды

  • Python 2.7
  • Robot Framwork
  • wxPython (Python - очень известная библиотека GUI, которая поддерживает библиотеку времени выполнения Ride)
  • RIDE (Редактор тестовых данных Robot Framework, который позволяет создавать, запускать и организовывать тестовые элементы тестовых случаев, может быть выполнен в графическом интерфейсе)
  • Selenium2Library (Библиотека тестов Selenium2, основанная на драйвере веб-драйвера)
  • DatabaseLibrary

geckodriver, chromedriver и IEDriverServer Драйвер браузера

установка Python

После завершения установки добавьте C: \ Python27 и C: \ Python27 \ Scripts в системную переменную среды Path. Введите python в командной строке, чтобы убедиться, что установка прошла успешно, и вы увидите, какая версия установлена.

Selenium2Библиотека установки

pip install robotframework-selenium2library

База данныхБиблиотека установки

Автоматизация тестирования веб-приложений с помощью Robot Framework (первые шаги)

1. Установка Robot Framework.
2. Пример теста – регистрация почтового ящика в Yandex.
3. Пример теста – автологин в Gmail.


На сегодняшний день существует богатый инструментарий для тестирования веб-приложений. Не так давно я писала о тестировании при помощи Selenium RC+Ruby, на этот раз будем использовать Robot Framework (RF) и библиотеку SeleniumLibrary.
RF использует ключевые слова (keywords) для написания тестов. Эти ключевые слова содержатся в нескольких стандартных библиотеках: BuiltIn, OperatingSystem, Telnet, Collections, String, Dialogs, Screenshot. Для некоторых из них достаточно установленного python, другие же требуют установки jython.
SeleniumLibrary мы ставим отдельно. Прежде, чем писать тесты можете скачать демку и посмотреть стандартный пример + нам понадобится файл rundemo.py для запуска тестов, он есть в демке.
Так же мне очень нравится, как он генерирует отчеты – создаются три файла: log.html, report.html и selenium_log.txt. К примеру, посмотрите скриншот

1. Установка Robot Framework

Resource resource.txt
Suite Teardown Run Keyword If Any Tests Failed Capture Screenshot

Valid Login
Step 1
Step 2

Library BuiltIn
Library Dialogs
Library SeleniumLibrary

Step 2
Input Text passwd 123456
Input Text passwd2 123456
Select From List hintq Номер паспорта
Input Text hinta 123456789
$ = Get Value From User Type the characters you see in the picture below
Input Text code $
Click Button newform
Page Should Contain Поздравляем, регистрация успешно завершена!

Для запуска тестов в командной строке переходим в директорию где хранится yandex_registration.txt и пишем rundemo.py yandex_registration.txt

==комментарии к тесту==
Мы будем писать тесты в простом текстовом формате.
Разделителем двух команд является 2 пробела – впрочем, обо всем этом написано в
руководстве пользователя


Suite Teardown Run Keyword If Any Tests Failed Capture Screenshot делает автоматический скриншот в случае провала теста, удобно.
Sleep 15s ставит на паузу тест – в это время вы как раз можете ввести логин или капчу. Не всегда удобно, но можно пользоваться. Кстати, это ключевое слово библиотеки BuiltIn
$ = Get Value From User Type the characters you see in the picture below а здесь мы вызываем диалоговое окно для ввода, чтобы было понятнее см.скриншот

Т.е. тест ставится на паузу, пока вы не введете значение.
Get Value From User ключевое слово библиотеки Dialogs.
Set Selenium Timeout 20 sec увеличивает значение времени ожидания выполнения кейворда до заданного времени. Очень полезно, если целевой сайт слишком долго грузится и выполнение постоянно обрывается с ошибкой timeout.

3. Пример теста – автологин в Gmail
Мы напишем тест, который позволит заходить в gmail выбирая аккаунт в диалоговом окне. Email и пароль будут захардкоджены в скрипте.

Resource resource.txt
Suite Teardown Run Keyword If Any Tests Failed Capture Screenshot

Valid Login
Open Login Page
Choose Account
Account Info

Library SeleniumLibrary
Library Dialogs
Library BuiltIn

Go To Login Page
Go To $
Title Should Be Gmail: электронная почта от Google

Choose Account
$ = Get Selection From User Choose login account @
$ = Set Variable If
. "$" == "@[0]" username1@gmail.com
. "$" == "@[1]" username2@gmail.com
$ = Set Variable If
. "$" == "@[0]" password1
. "$" == "@[1]" password2
Set Suite Variable $
Set Suite Variable $

Input Account Info
Input Text Email $
Input Text Passwd $
Click Button signIn

Robot Framework (далее - Robot) - инструмент для автоматизированного тестирования, написан на Python. Robot используется для автоматического тестирования в разных областях разработки: от web-фронтенда и бекенда до embedded-устройств. По умолчанию Robot предоставляет базовый набор функций (например, работу со строками, возможность запуска внешних программ, подключение по Telnet), но с помощью внешних библиотек возможности фреймворка могут быть значительно расширены.

В данной статье речь пойдёт о применении Robot для тестирования простого embedded-устройства с применением встроенных функций, с использованием сторонней библиотеки, а также с помощью кастомной библиотеки на Python. В качестве среды для запуска Robot будет использоваться RaspberryPI 4B (далее - rPi) с установленной Raspberry Pi OS. Эта платформа была выбрана для демонстрации, т.к. rPi содержит встроенный Bluetooth-адаптер и внешние GPIO-пины, удобные для тестирования устройств. Тестируемое устройство - плата DOIT ESP32S Devkit V1 с прошивкой на Arduino.

Тестируемое устройство

В качестве примера рассмотрим простое устройство, реализованное на отладочной плате DOIT ESP32S Devkit V1 - она построена на SoC ESP32 со следующими характеристиками:

32-разрядный CPU с тактовой частотой до 240 МГц

Внешние GPIO x 34

Wi-Fi 802.11b/g/n и много другой периферии (PWM, SPI, DAC, ADC, . ), которая не используется в данной статье

Для примера был создан Arduino-скетч, работающий следующим образом: ESP32 принимает данные по UART, при получении символа "1" контроллер зажигает светодиод (пин D2); при получении символа "0" светодиод отключается. Также в прошивке реализован BLE GATT-сервис с одной read-only характеристикой, которая содержит текущее состояние светодиода (подробнее про BLE GATT-сервисы можно прочитать здесь. Таким образом, управление светодиодом осуществляется через UART, а с помощью BLE можно узнать текущее состояние светодиода.

Исходный код скетча

Схема подключения плат в тестовом стенде:


Установка Robot

Для запуска тестов из данной статьи необходимо установить несколько пакетов:

Также для работы с внешними пинами понадобится утилита wiringpi, которую можно установить из репозитория Raspberry Pi OS:

Пример теста в Robot

Перед тем, как перейти к написанию тестов для нашего девайса, рассмотрим как выглядят тест-кейсы в Robot в целом. Все тесты содержатся в файлах с расширением .robot, причём в одном файле можно написать сразу несколько тест-кейсов, объединённых в один тест-сьют. В файле .robot есть несколько секций, названия секций выделяются тремя знаками *. В наших примерах будут использоваться секции: *** Settings *** (в ней подключаются внешние библиотеки и задаются настройки тестов), *** Variables *** (для объявления переменных), *** Keywords *** (для создания собственных ключевых слов, которые затем можно использовать в тестах) и *** Test Cases *** (для написания тест-кейсов). Более подробное описание секций и другую информацию об Robot можно найти в официальном User Guide.

Каждый тест-кейс состоит из набора ключевых слов, которые запускаются последовательно друг за другом. Некоторые ключевые слова принимают на вход аргументы - например, ключевое слово Log принимает один обязательный аргумент - message, который сохранится в log-файле по завершении теста. В качестве разделителя имени ключевого слова и аргумента в Robot могут использоваться:

несколько пробелов подряд (от двух и больше). В примерах в данной статье в качестве разделителя используются 4 пробела подряд

Некоторые ключевые слова возвращают значение, которое можно записать в переменную. Например, ключевое слово Set Variable используется для записи аргумента в указанную переменную $= Set Variable Hello.

Ключевые слова могут завершаться успешно (Success) и неуспешно (Fail). В случае, если ключевое слово завершилось неуспешно, тест-кейс, в котором произошёл вызов ключевого слова, так же завершается с результатом Fail. Например, ключевое слово Should Be Equal As Strings сравнивает строки, и возвращает Fail, если они не равны.

В Robot присутствует большое количество встроенных ключевых слов, также существует возможность создавать собственные ключевые слова в разделе *** Keywords ***.

Рассмотрим следующий тест-сьют в качестве примера:

Для запуска данного тест-сьюта надо сохранить его в отдельный файл и запустить следующей командой:


Как можно увидеть, Test Case Pass Example завершился успешно, а Test Case Fail Example завершился неуспешно. Узнать подробнее, на каком ключевом слове тест-кейс завершился неудачей, можно, посмотрев лог-файл simple_test.log:


Как видно из лог-файла, ключевое слово Should Be Equal As Strings во втором тест-кейсе завершилось с результатом Fail, т.к. переменная $ не равна Hello world.

Также в лог-файле можно увидеть, что при запуске тест-сьюта помимо исполнения ключевых слов, описанных в секции *** Test Cases *** вызывались ключевые слова из секции *** Settings ***: Suite Setup и Suite Teardown вызываются в начале и в конце тест-сьюта соответственно, а Test Setup и Test Teardown в начале и в конце каждого тест-кейса соответственно. Секция Setup используется для предварительных настроек необходимых для каждого тест-кейса, а Teardown для операций, которые необходимо выполнять в конце теста независимо от его результата (например, для закрытия программ запущенных внутри теста, или для удаления временных файлов).

Пишем тесты для embedded-устройства

Для проверки функций, реализованных в описанном выше скетче, напишем два тест-кейса: Test LED Switch On и Test LED Switch Off. Каждый из данных тест-кейсов будет содержать следующий сценарий:

отправка команды для включения/отключения LED ("1" в первом случае, и "0" во втором) по UART (через USB)

проверка состояния светодиода с помощью чтения линии GPIO.0 на rPi

проверка значения GATT-характеристики с помощью BLE

Используем готовые библиотеки

Для начала напишем основу теста с использованием сторонних (будем использовать стороннюю библиотеку SerialLibrary для отправки команды по UART) и встроенных библиотек (будем использовать встроенную библиотеку Process для запуска утилиты gpio, которая позволяет читать состояние пина rPi).

Для включения/отключения светодиода нам необходимо создать ключевые слова, которые отправляют "1" либо "0" по UART. Для этого сначала необходимо в секции *** Settings *** подключить библиотеку SerialLibrary (Library SerialLibrary), а также вызвать на этапе Test Setup ключевое слово для конфигурирования последовательного порта (Open Serial Port). Непосредственно включение и отключение светодиода будет производиться ключевыми словами Turn LED On и Turn LED Off, внутри которых происходит вызов Write Data, реализованного в библиотеке SerialLibrary.

Для проверки состояния светодиода создадим ключевое слово, внутри которого происходит вызов утилиты gpio. Для запуска внешних программ в Robot есть встроенная библиотека Process. Для нашей задачи подойдёт ключевое слово Run Process, которое принимает на вход название вызываемой программы и передаваемые аргументы, а возвращает результат выполнения команды, в т.ч. вывод программы в stdout. Для чтения состояния пина GPIO.0 нужно вызвать gpio read 0, после чего проверить, вывела программа "1" или "0". Для сравнения состояния пина с ожидаемым будем использовать ключевое слово Should Be Equal As Integers.

В итоге у нас получился следующий тест-сьют:

Пишем собственную библиотеку

В скетче реализован BLE GATT-сервис с одной характеристикой, доступной для чтения. Данная характеристика содержит текущее состояние светодиода: "1" если светодиод включен и "0" если он выключен. UUID характеристики был сгенерирован случайным образом и захардкожен в скетче - ece27bad-3d4b-4072-8494-76a551f0b6cc.

Дополним тест чтением характеристики через BLE. В Robot существует возможность создавать собственные библиотеки для расширения функционала. Чтобы не писать весь функционал BLE с нуля, воспользуемся готовым модулем pygatt и напишем к нему небольшую надстройку на Python, в которой реализуем класс с единственной функцией - чтение характеристики BLE-устройства. В качестве аргументов будем передавать данной функции адрес устройства и UUID характеристики. Сама по себе функция достаточно примитивна, так как является надстройкой над pygatt, и производит следующую последовательность операций: подключается в BLE-адаптеру через последовательный порт (в rPi 4B есть встроенный Bluetooth-адаптер), открывает Bluetooth-соединение с удалённым устройством, читает значение характеристики и возвращает его наружу.

Исходный код библиотеки:

После подключения данной библиотеки (с помощью Library BluetoothTesting.py) Robot автоматически создаст ключевое слово Read Char Value (при его вызове фактически вызывается функция read_char_value()). При этом данное ключевое слово принимает на входе два аргумента: $ и $ и возвращает значение, прочитанное из GATT-характеристики. Теперь можно дополнить созданный ранее тест-сьют проверкой BLE-характеристики:

Итоговый тест проверяет корректность работы устройства, а именно: отправляет по UART команду на включение, либо отключение светодиода, проверяет корректность состояния светодиода в BLE GATT-сервисе и проверяет фактическое состояние светодиода с помощью чтения состояния GPIO-пина. Оба написанных тест-кейса проходят успешно:

Заключение

Тестирование в сфере embedded-устройств несколько сложнее, чем тестирование чисто программных продуктов, т.к. требует создания отдельного тестового стенда для подключения к внешним интерфейсам тестируемого устройства. Но решение этих сложностей окупается уменьшением ошибок в выпускаемом продукте и возможностью контролировать качество в процессе разработки и поддержки устройства. За рамками данной статьи осталось множество вопросов, связанных с тестированием в embedded, например: автоматическое тестирование железа без цифровых интерфейсов, интеграция Robot Framework в Jenkins, подключение измерительных приборов к тестовому стенду и т. д. Но, надеюсь, что этот короткий обзор возможностей Robot-а поможет embedded-командам по крайней мере начать применять практики автоматизированного тестирования в своих разработках.

Войти

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Автоматизация тестирования веб-приложений с помощью Robot Framework (первые шаги)

1. Установка Robot Framework.

2. Пример теста – регистрация почтового ящика в Yandex.

3. Пример теста – автологин в Gmail.


На сегодняшний день существует богатый инструментарий для тестирования веб-приложений. Не так давно я писала о тестировании при помощи Selenium RC+Ruby, на этот раз будем использовать Robot Framework (RF) и библиотеку SeleniumLibrary.
RF использует ключевые слова (keywords) для написания тестов. Эти ключевые слова содержатся в нескольких стандартных библиотеках: BuiltIn, OperatingSystem, Telnet, Collections, String, Dialogs, Screenshot. Для некоторых из них достаточно установленного python, другие же требуют установки jython.
SeleniumLibrary мы ставим отдельно. Прежде, чем писать тесты можете скачать демку и посмотреть стандартный пример + нам понадобится файл rundemo.py для запуска тестов, он есть в демке.
Так же мне очень нравится, как он генерирует отчеты – создаются три файла: log.html, report.html и selenium_log.txt. К примеру, посмотрите скриншот

Установка Robot Framework

1)устанавливаем Python версии 2.6.x или 2.7
-пропишите в переменной PATH такой путь - C:\Python26\Scripts (если установлен Python 2.6.х)
2)java (если до сих пор не установлено)
3)сам Robot Framework
Если у вас платформа x64 то просто кликните по инсталлятору правой кнопкой мыши, в контекстном меню выберете “исправление неполадок совместимости”, в режиме диагностики используем рекомендуемые параметры – установится без проблем.
4)ставим Selenium Library т.к. в основном мы будем писать тесты с помощью ключевых слов этой библиотеки.
5)по желанию RIDE (интегрированная среда разработки)
для запуска ввести в командной строке ride.py
6)качаем демку
нам понадобится rundemo.py для запуска тестов

15.71 КБ

Проверка установки: запустить cmd и написать “pybot --version”
должно отобразиться

Читайте также: