Я хотел бы добавить несколько цветов в вывод консоли RobotFramework.

Я пробовал использовать цветовые коды консоли, например:

${message}=  Set Variable  hello world!
Log To Console  \\e[0;36;49m${message}\\e[0;39;49m

(В консоли Linux echo -e "\e[0;36;49mHello world!\e[0;39;49m" напечатайте Hello world! голубым)

(Я также пробовал с одним кодом \, а также \033[31m, \033[0m, ...)

Но не работает ...

Итак, можно ли сделать что-то вроде:

${message}=  Set Variable  hello world!
Log To Console ${message.red}

Я нашел этот модуль, но не нашел не нашел ничего о том, как его использовать :(

Я старался:

Log To Console ${message.red}  robot.output.console.highlighting

А также

${message}=  Evaluate  ${message}.red  robot.output.console.highlighting
Log To Console ${message}

Но ничего не работает: '(

3
Matthieu.P 26 Фев 2016 в 16:03

2 ответа

Лучший ответ

Поскольку Robot Framework интерпретирует '\', Log To Console \\033[31mRed Text\\033[0m не окрашивает вывод.

Чтобы решить эту проблему, вы должны Evaluate переменную перед входом в консоль:

${message}=  Evaluate  "\\033[31mRed Text\\033[0m"
Log To Console  ${message}

В итоге я получил следующее решение, которое считаю довольно "чистым":

*** Variables ***
${BLACK}  "\\033[30m"
${RED}    "\\033[31m"
# More colors ANSI codes...

*** Keywords ***
Initialize Colors
  ${black}=  Evaluate  ${BLACK}
  Set Test Variable  ${black}
  ${red}=  Evaluate  ${RED}
  Set Test Variable  ${red}
  # More colors...

Затем вам просто нужно использовать предыдущее ключевое слово в настройке Suite / Test Case, и вы можете раскрасить свои результаты, как показано ниже:

Log To Console  ${cyan}Some Text in cyan and a ${red}${variable}${cyan} in red${default}
9
Matthieu.P 29 Фев 2016 в 13:54

Могу я спросить здесь вашу общую цель? Это просто для вывода случайного текста разными цветами?

Вот что я делаю, чтобы легко сигнализировать PASS / FAIL и т. Д. В разных тестовых примерах, чтобы выделить их:

--monitorcolors ansi

В вашей команде для запуска вашего набора тестов включите указанное выше в начало команды.

1
shicky 26 Фев 2016 в 14:48