Есть ли способ изменить цвет ключевого слова, запускаемого в файле журнала, даже если это ключевое слово было успешным? - PullRequest
0 голосов
/ 05 ноября 2018

Итак, для моего проекта роботизированной системы я работал над тем, чтобы узнать, заняло ли данное действие в моем тестовом примере «больше времени, чем нужно»; это означает, что, принимая во внимание результаты предыдущих выполнений, я могу иметь представление о том, сколько времени обычно занимает действие, и в случае действия, превышающего это время, я хочу, чтобы этот факт был указан в моем файле журнала. .

Для этого я использовал библиотеку DateTime для сравнения времени, а затем, если разница во времени между началом теста и концом действия превышает X секунд, журнал уровня WARN выводится как на консоль, так и в файл журнала.

Однако в этом файле журнала каждое ключевое слово, которое было успешно выполнено, отображается зеленым, как на скриншоте:

log file clipped screenshot

У меня вопрос: возможно ли, если этот мягкий тайм-аут действительно превышен в данном ключевом слове, чтобы это конкретное ключевое слово отображалось в любом другом цвете, кроме зеленого, чтобы:

  1. облегчает обнаружение мягких таймаутов
  2. упростить процесс обмена этими результатами с нетехническим управленческим персоналом?

Я не хочу использовать функцию [Timeout], которая встроена в Robotframework, так как я не хочу, чтобы мои тесты проваливались из-за такого времени ожидания. Я просто хочу иметь простой способ определения потенциальной производительности или временных проблем в сети с помощью моих сценариев Robotframework.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

В Robot Framework есть только 2 статуса: PASS и FAIL, и именно они определяют красный / зеленый цвета. Это соответствует характеру приложения, которое проверяет ситуации, которые в целом должны быть либо пройдены, либо не пройдены.

Как только производительность ключевого слова или тестового примера становится интересной, я думаю, что это больше не должно быть частью самого набора тестов. Нетрудно сравнить время одного ключевого слова / контрольного примера с базовой линией. Но что, если вы хотите сравнить результаты за более длительный период времени. Что вы хотите сравнить одну среду с другой. Тогда эта настройка не будет работать. По этой причине я бы рекомендовал использовать отчет или инструмент BI для загрузки результатов и создания отчетов о производительности.

Если это невозможно, то я бы, вероятно, использовал теги Test Case и использовал бы сообщения Test Case, чтобы отметить те тесты, которые превысили свой базовый уровень. В приведенном ниже примере есть два теста, первый из которых проходит, но превышает установленный базовый уровень. Через функцию отчета вы можете затем отфильтровать тег и использовать сообщение Test Case для представления логической ошибки.

*** Settings ***
Library          DateTime    

Test Setup       Setup Metrics
Test Teardown    Check Metrics

*** Variables ***
&{baseline}    TC - Pass=1    TC - Fail=2

*** Test Cases ***
TC - Pass
    Sleep    2s
    No Operation

TC - Fail
    Fail

*** Keywords ***
Setup Metrics
    ${tc_start}    Get Current Date    result_format=epoch
    Set Test Variable    ${tc_start}   ${tc_start}  

Check Metrics
    ${tc_end}    Get Current Date    result_format=epoch
    ${tc_duration}     Subtract Time From Time    ${tc_end}     ${tc_start}

    Run Keyword If    ${tc_duration} > ${baseline['${TEST NAME}']}     Mark Test    ${tc_duration}    ${baseline['${TEST NAME}']} 

Mark Test
    [Arguments]    ${duration}    ${baseline}
    Set Tags    Time Out
    ${difference}     Subtract Time From Time    ${duration}    ${baseline}
    Set Test Message    The duration of ${duration} sec exceeded the baseline by ${difference} sec    append=True

enter image description here enter image description here

0 голосов
/ 06 ноября 2018

Не так, как вы это описываете. Ключевое слово зеленого цвета Run Keyword If успешно выполнено.

Возможный обходной путь: Используйте ключевое слово Run Keyword And Continue On Failure или Run Keyword And Ignore Error (я не могу точно сказать, какое именно) следующим образом:

Run Keyword And Continue On Failure    Should Be True    ${timeDiff} <=  ${maxTimeout}

Итак, если выражение ${timeDiff} <= ${maxTimeout} не равно true, то Should Be True не будет выполнено и будет помечено красным в отчете. Однако вам нужно расширить отчет до этого ключевого слова, поскольку он не находится на верхнем уровне.

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