Путь до библиотек и ресурсов Robot Framework

Введение

Из этой статьи вы сможете узнать о том как явно указывать путь до ресурсов и внешних Python библиотек в Robot Framework.

Это будет особенно полезно тем, кто пишет свои библиотеки для робота и/или использует сложную структуру с большим количеством вложений.

Рекомендую сперва познакомиться со статьями про архитектуру тестов и про подключение внешних Python библиотек

В примере из статьи «Подключение внешних Python библиотек» библиотеки лежали в директории libraries а тесты в tests

ext_py_lib/ |-- browser |-- libraries | `-- unstable_url.py `-- tests `-- test_title.robot

Поэтому импорт библиотеки выглядел следующим оригинальным образом

Library ../libraries/unstable_url.py

Если в директории tests появятся поддиректории - оттуда импорт будте выглядеть как

Library ../../libraries/unstable_url.py

или даже так

Library ../../../libraries/unstable_url.py

Чтобы не делать относительный импорт можно воспользоваться одним из описанных ниже способов

--pythonpath

С помощью опции --pythonpath можно временно добавить путь до библиотек в PYTHONPATH

Начиная с этого примера будем указывать библиотеки без .py

Library unstable_url

robot --pythonpath /c/Users/Andrei/robot/ext_py_lib/libraries test_unstable_title.robot

--argumentfile

Чтобы не вводить путь вручную, можно сохранить его в так называемый argumentfile

Создадим файл all_arguments.robot и добавим туда следующий код

--pythonpath /c/Users/Andrei/robot/ext_py_lib/libraries test_unstable_title.robot

Чтобы использовать этот файл воспользуемся опцией --argumentfile

robot --argumentfile all_arguments.robot test_unstable_title.robot

Официальная документация

Dockerfile

Если ваше окружение создается с использованием Docker , то путь до библиотек можно прописать в Dockerfile

Пример, который работает в одном из моих проектов:

… ENV TEST_DIR=/opt ENV PYTHON_DIR=/user/local/bin/python ENV ROBOT_RESOURCES=/opt/robot/src/resources ENV ROBOT_LIBRARIES=/opt/robot/src/libraries ENV PYTHONPATH=$TEST_DIR:$PYTHON_DIR:$ROBOT_RESOURCES:$ROBOT_LIBRARIES …

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