Записать словарь на консоль в `robot framework` - PullRequest
0 голосов
/ 08 июня 2018

У меня есть словарь, подобный этому

{ a:{red ,blue, green}, b: {head, eyes, nose} }

, и я хочу напечатать его в консоли, отформатированной следующим образом.

------------
a
------------
red
blue
green
-------------
b
-------------
head
eyes
nose
-------------

Так как robot framework неПоддержка вложенных циклов, мне трудно это сделать.Я хочу обработать это в консоли работы, а не в log.html.

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Хотя решение Python, вероятно, даст вам немного больше гибкости в отношении форматирования и т. Д., Для создания желаемой логики достаточно ключевых слов в Robot.Ниже приведен пример кода и вывод:

*** Settings ***
Library    Collections    

*** Variables ***
@{a}    red     blue    green
@{b}    head    eyes    nose
&{DIC}    a=${a}    b=${b}


*** Test Cases ***
TC
    Log Structure    ${DIC}

*** Keywords ***
Log Structure
    [Arguments]    ${structure}
    Log To Console    \n
    Log To Console    ------------------------------

    # For Loops only work on Lists, so get all the keys from the Dictionary
    ${keys}     Get Dictionary Keys    ${structure}

    :FOR    ${item}    IN   @{keys}
    \    Log Many To Console    ${item}    ${structure["${item}"]}


Log Many To Console
    [Arguments]    ${name}    ${list}

    Log To Console    ${name}
    Log To Console    ------------------------------

    :FOR    ${item}    IN     @{list}
    \    Log To Console    ${item}

    Log To Console    ------------------------------

В результате получается следующий вывод консоли:

==============================================================================
ConsoleLog.ConsoleLog                                                         
==============================================================================
TC                                                                    

------------------------------
a
------------------------------
red
blue
green
------------------------------
b
------------------------------
head
eyes
nose
------------------------------
| PASS |
------------------------------------------------------------------------------
ConsoleLog.ConsoleLog                                                 | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
0 голосов
/ 08 июня 2018

Это напечатает то, что вы хотите на консоли только с одним циклом:

from robot.api import logger

d = { "a":{"red" ,"blue", "green"}, "b": {"head", "eyes", "nose"} }
divider = "------------"
s = []

for item in d:
    s.append(divider)
    s.append(item)
    s.append(divider)
    s.extend(d[item])

s = "\n".join(s)

logger.console(s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...