Архитектура тестов на Robot Framework

Введение

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

Предполагается, что вы владеете материалом статьи «Основы Robot Framework»

Официальные рекомендации по структуре проектов можно изучить здесь

В этой статье будет использоваться сокращение КС - которое означает Ключевое Слово/ Ключевые Слова иначе говоря Keyword / Keywords

КС - Keyword

Свои КС

Начнём с создания своих ключевых слов внутри одного и того же файла с тестами

robot/ `-- Tests `-- ebay `-- BasicSearch.robot

Объявлять самостоятельно созданные ключевые слова можно в разделе Keywords.

В этом случае Тest Case будет короче и читаться будет легче.

*** Settings *** Documentation Basic Search Functionality Library SeleniumLibrary *** Variables *** *** Test Cases *** Verify basic search functionality for eBay [Documentation] This test case verifies the basic search [Tags] Functional Start TestCase Verify Search Results Finish TestCase *** Keywords *** Start TestCase Open Browser https://www.ebay.com chrome Input Text //*[@id="gh-ac"] mobile Verify Search Results Click Element id:gh-btn Page Should Contain results for mobile Finish TestCase Close Browser

robot -d results Tests/eBay/BasicSearch.robot

Опция -d задаёт директорию, в которую будут сохранены log.html , output.xml и report.html

============================================================================== BasicSearch :: Basic Search Functionality ============================================================================== Verify basic search functionality for eBay :: This test case verif... DevTools listening on ws://127.0.0.1:65225/devtools/browser/bf56f09f-36d7-45c1-80a8-88687db70932 Verify basic search functionality for eBay :: This test case verif... | PASS | ------------------------------------------------------------------------------ BasicSearch :: Basic Search Functionality | PASS | 1 test, 1 passed, 0 failed ============================================================================== Output: /home/andrei/robot/Tests/ebay/results/output.xml Log: /home/andrei/robot/Tests/ebay/results/log.html Report: /home/andrei/robot/Tests/ebay/results/report.html

Изображение баннера

.resource

В современных версиях Robot Framework файлы, которые содержат ключевые слова, но сами по себе не предназначены для запуска тестов принято создавать с расширением .resource

В отличие от библиотек при импорте ресурс нельзя переименовать с помощью as.

Дискуссия по поводу добавления этой фичи ведётся в issue 2104

Из официальной документации следует, что .resource теперь использовать предпочтительнее чем .robot


Resource files can use the .robot extension as well, but using the dedicated .resource extension is recommended and may be mandated in the future.

Files containing non-ASCII characters must be saved using the UTF-8 encoding.

Вынести КС в отдельный файл

Хранить всё в одном файле быстро становится неудобно.

Рекомендуется сами тесты оставить в файле с расширением .robot , можно оставить изначальное BasicSearch.robot а Keywords разделим на две группы - общие и относящиеся к проекту.

В Robot Framework для этих целей используется специальное расширение .resource о котором вы можете прочитать в предыдущем параграфе

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

robot/ |-- Resources | |-- CommonFunctionality.resource | `-- eBayUserDefinedKeywords.resource `-- Tests `-- ebay `-- BasicSearch.robot

BasicSearch.robot

*** Settings *** Documentation Basic Search Functionality Resource ../../Resources/CommonFunctionality.resource Resource ../../Resources/eBayUserDefinedKeywords.resource *** Variables *** *** Test Cases *** Verify basic search functionality for eBay [Documentation] This test case verifies the basic search [Tags] Functional Start TestCase Verify Search Results Finish TestCase

Обратите внимание на то, что в файле BasicSearch.robot уже не нужно подключать SeleniumLibrary и писать Keywords

В файл CommonFunctionality.resource вынесем такие общие действия как открыть браузер, закрыть браузер и так далее

*** Settings *** Library SeleniumLibrary *** Keywords *** Start TestCase Open Browser https://www.ebay.com chrome Maximize Browser Window Finish TestCase Close Browser

Обратите внимание на строку 3. Пользовательские ключи содержат в себе ключи из библиотеки SeleniumLibrary, поэтому её нужно подключить в настройках.

В файл eBayUserDefinedKeywords.resource вынесем всё, что относится именно к этому проекту

*** Settings *** Library SeleniumLibrary *** Keywords *** Verify Search Results Input Text //*[@id="gh-ac"] mobile Click Element id:gh-btn Page Should Contain results for mobile Filter Results By Condition Mouse Over //*[@id="w7"] Sleep 3s Mouse Down //*[@id="w7"]/div/ul/li[2] Click Element //*[@id="w7"]/div/ul/li[2] Verify Filter Results Element Should Contain //*[@id="srp-river-results-query_answer1-w0-x-carous

robot -d results Tests/eBay/BasicSearch.robot

============================================================================== BasicSearch :: Basic Search Functionality ============================================================================== Verify basic search functionality for eBay :: This test case verif... | PASS | ------------------------------------------------------------------------------ BasicSearch :: Basic Search Functionality | PASS | 1 test, 1 passed, 0 failed ==============================================================================

Если вы получили ошибку No keyword with name 'Start TestCase' found

============================================================================== BasicSearch :: Basic Search Functionality ============================================================================== Verify basic search functionality for eBay :: This test case verif... |FAIL | No keyword with name 'Start TestCase' found. ------------------------------------------------------------------------------ BasicSearch :: Basic Search Functionality |FAIL | 1 test, 0 passed, 1 failed ==============================================================================

- убедитесь что в начале BasicSearch.robot вы с помощью Resourse указали правильный путь до файлов CommonFunctionality.resource , eBayUserDefinedKeywords.resource

*** Settings *** Documentation Basic Search Functionality Resource ../../Resources/CommonFunctionality.resource Resource ../../Resources/eBayUserDefinedKeywords.resource

Test Setup и Test Teardown

Код из предыдущего примера отлично сработает в случае успеха.

Однако, если результатом будет FAIL браузер не закроется автоматически.

Чтобы избавить себя от необходимости подчищать окружение в случае провала - используйте Test Setup и Test Teardown

*** Settings *** Documentation Basic Search Functionality Resource ../../Resources/CommonFunctionality.robot Resource ../../Resources/eBayUserDefinedKeywords.robot Test Setup Start TestCase Test Teardown Finish TestCase *** Variables *** *** Test Cases *** Verify basic search functionality for eBay [Documentation] This test case verifies the basic search [Tags] Functional Verify Search Results Filter Results By Condition Verify Filter Results

Явно указать источник ключевого слова

Если в разных файлах повторяются пользовательские ключи - возможен конфликт.

Чтобы его избежать можно явно указать и какого файла используется КС

eBayUserDefinedKeywords.Verify Search Results eBayUserDefinedKeywords.Filter Results By Condition eBayUserDefinedKeywords.Verify Filter Results

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

Похожие статьи
Robot Framework
Архитектура
Логи
__init__.robot
Подключение своих .py библиотек
Путь до библиотек и ресурсов
Keyword как декоратор
Template
Пример с pywinauto

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

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

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

@aofeed

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

@aofeedchat

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