Robot Framework как Python библиотека

Введение

Довольно типичной являетс ситуация, когда к существущим библиотекам робота добавляют свои библиотеки на Python

Но не стоит забывать о том, что Robot Framework это тоже Python библиотека и её ключевые слова могут быть вызваны из Python кода.

В этой статье вы можете изучить примеры таких вызовов

Screenshot

Рассмотрим как делать роботоские скриншоты на примере похожем на unstable_url из статьи про кастомные Python библиотеки

Понятно, что с помощью Python можно делать скриншоты разными способами, но нас интересует именно такой скриншот, который будет интергрирован в результаты теста.

Для библиотеки Screenshot требуется установка дополнительной библиотеки. В Windows это обычно Pillow.

Поддерживаемые инструменты и модули для создания снимков экрана То, как делаются снимки экрана, зависит от операционной системы. В OSX снимки экрана делаются с помощью встроенной утилиты захвата экрана. В других операционных системах вам необходимо установить один из следующих инструментов или модулей Python. Вы можете указать инструмент/модуль для использования при импорте библиотеки. Если инструмент или модуль не указаны, будет использоваться первый найденный. wxPython :: http://wxpython.org :: Универсальный набор инструментов Python GUI. PyGTK :: http://pygtk.org :: Этот модуль доступен по умолчанию в большинстве дистрибутивов Linux. Pillow :: http://python-pillow.github.io :: Работает только на Windows. Также поддерживается оригинальный пакет PIL. Scrot :: http://en.wikipedia.org/wiki/Scrot :: Не используется в Windows. Устанавливается с помощью apt-get install scrot или аналогичного.

python -m pip install pillow

Структура проекта

screenshot_demo/ |-- Libraries | `-- unstable_url.py `-- Tests `-- demo.robot

*** Settings *** Documentation Example that uses external python library Library ../libraries/unstable_url.py *** Test Cases *** Check URL [Tags] title ${url}= Get Unstable Url Should Be Equal As Strings ${url} https://www.devhops.ru

from robot.libraries.Screenshot import Screenshot from random import randrange _screenshot = Screenshot() def get_unstable_url() -> str: _screenshot.take_screenshot("my_screen", "900px") if randrange(2) == 1: return "https://www.devhops.ru" else: return "https://www.heihei.ru"

Теперь при каждом вызове unstable_url() средствами робота будет сделан снимок экрана.

Он будет виден в файле log.html

Физически он будет расположен в той директории, откуда был вызван тест.

По умолчанию первый скриншот называется my_screen_1.jpg . Если его не удалить и запустить тест снова - появится второй файл my_screen_2.jpg и так далее.

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