Архитектура тестов на 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 |