Словари в Robot Framework

Содержание
Введение
Создать словарь
Обратиться к элементам
DotDict и Convert To Dictionary
Итерация по словарю
Похожие статьи

Введение

В этой статье вы можете изучить приёмы работы со словарями в Robot Framework.

Будут рассмотрены как примеры с библиотекой Collections так и без неё.

Создать словарь

Создать словарь можно с помощью &

*** Settings *** *** Variables *** &{capitals}= Finland=Helsinki ... Latvia=Riga ... Sweden=Stockholm *** Test Cases *** Print Dict Log To Console ${\n} Log To Console ${capitals}

Если подключить библиотеку Collections , то словарь можно создать с помощью ключевого слова Create Dictionary

*** Settings *** Library Collections *** Test Cases *** Print Dict &{capitals}= Create Dictionary ... Finland=Helsinki ... Latvia=Riga ... Sweden=Stockholm Log To Console ${\n} Log To Console ${capitals}

python -m robot .\create_dict.robot

======================================================== Create Dict ======================================================== Print Dict .{'Finland': 'Helsinki', 'Latvia': 'Riga', 'Sweden': 'Stockholm'} Print Dict | PASS | -------------------------------------------------------- Create Dict | PASS | 1 test, 1 passed, 0 failed ========================================================

div id="accessattr" class="anchor">

Обратиться к элементам

Рассмотрим несколько вариаций скрипта dict_demo.robot

Обратиться к элементам словаря можно через .

*** Settings *** *** Variables *** &{urls} hh=https://www.heihei.ru ... tb=https://www.topbicycle.ru ... uu=https://www.urn.su *** Test Cases *** Read Values Log To Console ${\n} Log To Console ${urls.hh} Log To Console ${urls.tb} Log To Console ${urls.uu}

Можно с помощью ["имя_ключа"]

*** Settings *** *** Variables *** &{urls} hh=https://www.heihei.ru ... tb=https://www.topbicycle.ru ... uu=https://www.urn.su *** Test Cases *** Read Values Log To Console ${\n} Log To Console ${urls["hh"]} Log To Console ${urls["tb"]} Log To Console ${urls["uu"]}

Если подключить библиотеку Collections , то к элементам словаря можно обратиться с помощью ключевого слова Get From Dictionary

В нашем примере это не очень удобно, так как приходится объявлять новые переменные.

*** Settings *** Library Collections *** Variables *** &{urls}= hh=https://www.heihei.ru ... tb=https://www.topbicycle.ru ... uu=https://www.urn.su *** Test Cases *** Read Values Log To Console ${\n} ${h}= Get From Dictionary ${urls} hh Log To Console ${h} ${t}= Get From Dictionary ${urls} tb Log To Console ${t} ${u}= Get From Dictionary ${urls} uu Log To Console ${u}

python -m robot dict_demo.robot

======================================================== Dict Demo ======================================================== Read Values .https://www.heihei.ru .https://www.topbicycle.ru .https://www.urn.su Read Values | PASS | ------------------------------------------------------------------------------ Dict Demo | PASS | 1 test, 1 passed, 0 failed ======================================================== Output: C:\robot\dict\output.xml Log: C:\robot\dict\log.html Report: C:\robot\dict\report.html

Указать ключ из командной строки

Ключ можно записать в переменную и затем передавать её из командной строки.

Сперва пример с записанным значением:

*** Settings *** *** Variables *** ${site} tb &{urls} hh=https://www.heihei.ru ... tb=https://www.topbicycle.ru ... uu=https://www.urn.su *** Test Cases *** Access Variable Attribute Log To Console ${urls.${site}} # Возможен вариант: # Log To Console ${urls["${site}"]}

python -m robot dict_demo.robot

======================================================== Dict Demo ======================================================== Access Variable Attribute https://www.topbicycle.ru Access Variable Attribute | PASS | -------------------------------------------------------- Dict Demo | PASS | 1 test, 1 passed, 0 failed ========================================================

Теперь пример передачи переменной из командной строки.

При задании ключа с помощью опции -v можно указать нужный сайт во время вызова теста из терминала

python -m robot -v site:uu dict.robot

======================================================== Dict Demo ======================================================== Access Variable Attribute https://www.urn.su Access Variable Attribute | PASS | -------------------------------------------------------- Dict Demo | PASS | 1 test, 1 passed, 0 failed ========================================================

DotDict и Convert To Dictionary

Объект, который создаётся роботом как словарь имеет тип DotDict

Об этом важно помнить, если вы передаёте его дальше в Python

Convert To Dictionary

Чтобы передалать DotDict его в обычный словарь нужно использовать ключевое слово Convert To Dictionary из библиотеки Collections

*** Settings *** Library Collections *** Variables *** &{urls} hh=https://www.heihei.ru ... tb=https://www.topbicycle.ru ... uu=https://www.urn.su *** Test Cases *** Print Type ${type_of_urls}= Evaluate type($urls) Log To Console ${type_of_urls} Convert To Dict ${urls_dict}= Convert To Dictionary ${urls} ${t}= Evaluate type($urls_dict) Log To Console ${t}

python -m robot dict_demo.robot

======================================================== Dict Demo ======================================================== Print Type .<class 'robot.utils.dotdict.DotDict'> Print Type | PASS | -------------------------------------------------------- Convert To Dict ..<class 'dict'> Convert To Dict | PASS | -------------------------------------------------------- Dict Demo | PASS | 2 tests, 2 passed, 0 failed ========================================================

Итерация по словарю

*** Settings *** *** Variables *** &{mydict} a=1 b=2 c=3 *** Test Cases *** Loop Through Dict Log To Console ${\n} FOR ${key} IN @{mydict.keys()} ${value}= Get Variable Value ${mydict["${key}"]} Log To Console ${key} Log To Console ${value} END

======================================================== Dict Demo ======================================================== Loop Through Dict .a 1 b 2 c 3 Loop Through Dict | PASS | -------------------------------------------------------- Dict Demo | PASS | 1 test, 1 passed, 0 failed ========================================================

В следующем примере мы сделаем теже действия но уже с помощью ключевых слов Create Dictionary и Get From Dictonary из библиотеки Collections

*** Settings *** Library Collections *** Test Cases *** Loop Through Dict &{mydict}= Create Dictionary a=1 b=2 c=3 Log To Console ${\n} FOR ${key} IN @{mydict.keys()} ${value}= Get From Dictionary ${mydict} ${key} Log To Console "${key}:${value}" END

======================================================== Dict Demo ======================================================== Loop Through Dict . ."a:1" "b:2" "c:3" Loop Through Dict | PASS | -------------------------------------------------------- Dict Demo | PASS | 1 test, 1 passed, 0 failed ========================================================

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

Похожие статьи
Collections: списки, словари
Кортежи
Словари
Списки
in
Строки
Библиотеки

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

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

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

@aofeed

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

@aofeedchat

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