Словари в 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 | |
| Строки | |
| Библиотеки |