Теги в Robot Framework

Содержание
Введение
Применения тегов для включения/исключения тестов
Test Tags
Force Tags
Default Tags
Зарезервированные теги: skip и т.д.
Похожие статьи

Введение

Теги нужны для того чтобы можно было запускать только определённую часть тестов.

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

Наряду с [Documentation], [Setup], [Teardown], [Template] и [Timeout], [Tags] являются настройками тест кейса (Settings in the Test Case section)

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

settings-in-the-test-case-section

tagging-test-cases

Применения тегов для включения/исключения тестов

Рассмотрим тест в файле tags_demo.robot

Он состоит из трёх тест кейсов, один с тегом critical, второй с тегом weekly а третий без тегов.

Обратите внимание, между Tags и названием тега четыре пробела.

Минимум должно быть два, но четыре сложнее перепутать с одиночным пробелом.

Если запустить этот тест без опций никакого эффекта от тегов не будет.

*** Settings *** *** Test Cases *** Critical Test [Tags] critical Do Something Important Weekly Test [Tags] weekly Do Weekly Checkup Regular Test Log To Console Test Without Tags *** Keywords *** Do Something Important Log To Console Doing Something Important Do Weekly Checkup Log To Console Doing Weekly Checkup

robot tags_demo.robot

==================================================================== Tags Demo ==================================================================== Critical Test Doing Something Important Critical Test | PASS | -------------------------------------------------------------------- Weekly Test Doing Weekly Checkup Weekly Test | PASS | -------------------------------------------------------------------- Regular Test Test Without Tags Regular Test | PASS | -------------------------------------------------------------------- Tags Demo | PASS | 3 tests, 3 passed, 0 failed ==================================================================== Output: C:\Users\Andrei\robot\output.xml Log: C:\Users\Andrei\robot\log.html Report: C:\Users\Andrei\robot\report.html

Из логов видно, что запустились все три тест кейса.

Чтобы выполнить только тесты с тегом critical

robot --include critical tags_demo.robot

==================================================================== Tags Demo ==================================================================== Critical Test Doing Something Important Critical Test | PASS | -------------------------------------------------------------------- Tags Demo | PASS | 1 test, 1 passed, 0 failed ==================================================================== Output: C:\Users\Andrei\robot\output.xml Log: C:\Users\Andrei\robot\log.html Report: C:\Users\Andrei\robot\report.html

Чтобы выполнить все тесты кроме critical

robot --exclude critical tags_demo.robot

==================================================================== Tags Demo ==================================================================== Weekly Test Doing Weekly Checkup Weekly Test | PASS | -------------------------------------------------------------------- Regular Test Test Without Tags Regular Test | PASS | -------------------------------------------------------------------- Tags Demo | PASS | 2 tests, 2 passed, 0 failed ==================================================================== Output: C:\Users\Andrei\robot\output.xml Log: C:\Users\Andrei\robot\log.html Report: C:\Users\Andrei\robot\report.html

Test Tags

То, что раньше назвалось Force Tags. Применяется ко всем тест кейсам, не важно есть них настройки [Tags] или нет.

Добавим в Settings из предыдущего примера раздел Test Tags, в котором будут теги all и default и не будем производить никаких других изменений

*** Settings *** Test Tags all default

robot tags_demo.robot

и

robot --include all .\demo\Tests\tags_demo.robot

и

robot --include default .\demo\Tests\tags_demo.robot

Дадут одинаковый результат такой же как в предыдущем примере . Выполнятся все три теста.

Если попробовать ислючить один из этих тегов будет ошибка

robot --exclude all tags_demo.robot

[ ERROR ] Suite 'Tags Demo' contains no tests not matching tag 'all'. Try --help for usage information.

robot --exclude default tags_demo.robot

[ ERROR ] Suite 'Tags Demo' contains no tests not matching tag 'default'. Try --help for usage information.

Исключение общего тега

Чтобы исключить общий тег из тест кейса нужно указать его в настройках [Tags] со знаком минус.

Удалим тег default из тест кейса Weekly Test

*** Settings *** Test Tags all default *** Test Cases *** Critical Test [Tags] critical Do Something Important Weekly Test [Documentation] Test has no 'default' tag. [Tags] weekly -default Do Weekly Checkup Regular Test Log To Console Test Without Tags *** Keywords *** Do Something Important Log To Console Doing Something Important Do Weekly Checkup Log To Console Doing Weekly Checkup

robot --include default tags_demo.robot

В данном тест сьюте даст результат аналогичный

robot --exclude weekly tags_demo.robot

==================================================================== Tags Demo ==================================================================== Critical Test Doing Something Important Critical Test | PASS | -------------------------------------------------------------------- Regular Test Test Without Tags Regular Test | PASS | -------------------------------------------------------------------- Tags Demo | PASS | 2 tests, 2 passed, 0 failed ==================================================================== Output: C:\Users\Andrei\robot\output.xml Log: C:\Users\Andrei\robot\log.html Report: C:\Users\Andrei\robot\report.html

Выполнилось два теста.

Теперь, когда есть тест кейс, который не использует тег default можно исключить его и не получить ошибку.

robot --exclude default tags_demo.robot

==================================================================== Tags Demo ==================================================================== Weekly Test :: Test has no 'default' tag. Doing Weekly Checkup Weekly Test :: Test has no 'default' tag. | PASS | -------------------------------------------------------------------- Tags Demo | PASS | 1 test, 1 passed, 0 failed ==================================================================== Output: C:\Users\Andrei\robot\output.xml Log: C:\Users\Andrei\robot\log.html Report: C:\Users\Andrei\robot\report.html

Ислючить тег all по-прежнему нельзя.

robot --exclude all tags_demo.robot

[ ERROR ] Suite 'Tags Demo' contains no tests not matching tag 'all'. Try --help for usage information.

Force Tags

Force Tags это устаревшее название Test Tags.

Применяется ко всем тест кейсам, не важно есть них настройки [Tags] или нет. Для соответствия будущим версиям достаточно просто заменить Force на Test.

Так как ничего нового по сравнению с главой Test Tags не добавить - можно переходить к следующей главе - Default Tags

Default Tags

Force Tags это устаревшее название Test Tags. Применяется ко всем тест кейсам, не важно есть них настройки [Tags] или нет. Для соответствия будущим версиям достаточно просто заменить Force на Test

Default Tags применяются ко всем тестам, у которых нет настройки [Tags]. Для соответсвия будущим версиям робота нужно перенести название тега в Test Tags. Там где тег должен был применяться ничего менять не нужно, он по-прежнему применится. Если есть случае где дефолтные теги не применялись нужно будет дополнительно использовать знак минус перед названием соответствующего бывшего дефолтного тега.

Вот что сообщает нам официальная документация:

Устаревание тегов Force и тегов Default

До Robot Framework 6.0 теги можно было указать для тестов в разделе настроек с помощью двух разных настроек:

Force Tags Все тесты безоговорочно получают эти теги. Это то же самое, что и Test Tags в настоящее время. Default Tags Все тесты получают эти теги по умолчанию. Если у теста есть [Tags], он не получит эти теги.

Обе эти настройки по-прежнему работают, но они считаются устаревшими. В будущем будет добавлено видимое предупреждение об устаревании, скорее всего, в Robot Framework 8.0, и в конечном итоге эти настройки будут удалены. Для упрощения перехода можно использовать такие инструменты, как Tidy.

Обновление Force Tags требует только переименования в Test Tags. Настройка Default Tags будет полностью удалена, но функциональность -tag, представленная в Robot Framework 7.0, обеспечивает ту же базовую функциональность. Следующие примеры демонстрируют необходимые изменения.

Из комментариев автора робота на GitHub понятно, что замена Force Tags на Test Tags была сделана для упрощения локализации (т.е. перевода на другие языки).

Отмена Default Tags была сдалана для уменьшения числа доступных настроек с тегами. Это похоже на пример измнений из разряда потому что могу.

Старый синтаксис

Обратите внимание на тест No default. В нём чтобы отвязаться от тега default проставлена пустая настройка [Tags].

Так как Default Tags не применяются там где стоит [Tags] не важно пустой или нет - такой метод работает.

Тест Own and no default тажке отвязан от тега default благодаря наличию [Tags]

*** Settings *** Force Tags all Default Tags default *** Test Cases *** Common only [Documentation] Test has tags 'all' and 'default'. No Operation No default [Documentation] Test has only tag 'all'. [Tags] No Operation Own and no default [Documentation] Test has tags 'all' and 'own'. [Tags] own No Operation

Новый синтаксис

Снова обратите внимание на тест No default.

Теперь чтобы отвязаться от тега default нужно в настройках [Tags] указать -default

Тест Own and no default уже не может быть отвязан от тега default только благодаря наличию [Tags] в нём тоже нужно явно указать -default

*** Settings *** Test Tags all default *** Test Cases *** Common only [Documentation] Test has tags 'all' and 'default'. No Operation No default [Documentation] Test has only tag 'all'. [Tags] -default No Operation Own and no default [Documentation] Test has tags 'all' and 'own'. [Tags] own -default No Operation

Reserved tags

Пользователи, как правило, могут свободно использовать любые теги, которые работают в их контексте.

Однако существуют определенные теги, которые имеют предопределенное значение для самого Robot Framework, и использование их для других целей может иметь неожиданные результаты.

Все специальные теги, которые Robot Framework имеет и будет иметь в будущем, имеют префикс robot:.

Чтобы избежать проблем, пользователи не должны использовать теги с этими префиксами, если только они фактически не активируют специальную функциональность.

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

robot:skip

Пометим тегом robot:skip тест кейс Critical Test из предыдущего примера

*** Settings *** Test Tags all default *** Test Cases *** Critical Test [Tags] critical robot:skip Do Something Important Weekly Test [Documentation] Test has no 'default' tag. [Tags] weekly -default Do Weekly Checkup Regular Test Log To Console Test Without Tags *** Keywords *** Do Something Important Log To Console Doing Something Important Do Weekly Checkup Log To Console Doing Weekly Checkup

Теперь при обычном запуске тест кейс будет пропускаться

robot tags_demo.robot

======================================================================== Tags Demo ======================================================================== Critical Test | SKIP | Test skipped using 'robot:skip' tag. ------------------------------------------------------------------------ Weekly Test :: Test has no 'default' tag. Doing Weekly Checkup Weekly Test :: Test has no 'default' tag. | PASS | ------------------------------------------------------------------------ Regular Test Test Without Tags Regular Test | PASS | ------------------------------------------------------------------------ Tags Demo | PASS | 3 tests, 2 passed, 0 failed, 1 skipped ======================================================================== Output: C:\Users\Andrei\robot\output.xml Log: C:\Users\Andrei\robot\log.html Report: C:\Users\Andrei\robot\report.html

Если явно указать, что нужно включить тег robot:skip, то тест будет выбран и сразу же пропущен.

robot --include robot:skip tags_demo.robot

============================================================================== Tags Demo ============================================================================== Critical Test | SKIP | Test skipped using 'robot:skip' tag. ------------------------------------------------------------------------------ Tags Demo | SKIP | 1 test, 0 passed, 0 failed, 1 skipped ============================================================================== Output: C:\Users\Andrei\robot\output.xml Log: C:\Users\Andrei\robot\log.html Report: C:\Users\Andrei\robot\report.html

Похожие статьи
Robot Framework
Основы
Архитектура
RFBrowser
Переменные: set, reassign…
if else: Условные операторы
in: Оператор принадлежности к списку
Циклы
Перенос на новую строку
[Tags]: теги
Collections: списки, словари
JSON
Передача аргументов в кейворд
Evaluate
Поддержка Robot в PyCharm
Ошибки
Изображение баннера

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

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

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

@aofeed

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

@aofeedchat

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