有没有一种方法可以更改在日志文件中运行的关键字的颜色,即使该关键字成功了也可以吗?

时间:2018-11-05 14:09:06

标签: python selenium robotframework

因此,对于我的robotframework项目,我一直在研究一种方法,以了解测试用例中的给定操作是否已“花费了比预期更长的时间”;这就是说,考虑到先前执行的结果,我可以知道某个动作通常需要多长时间,并且,如果某个动作超过该时间,我希望在日志文件中指出该事实。

为此,我使用了DateTime库来比较时间,然后,如果测试用例开始与操作结束之间的时间差大于X秒,则WARN-级别的日志被打印到控制台和日志文件中。

但是,在该日志文件中,每个成功执行的关键字都以绿色显示,如屏幕截图所示:

log file clipped screenshot

我的问题是:如果给定关键字实际上超出了软超时,是否可以使该特定关键字以除绿色以外的任何其他颜色出现,以便:

  1. 使软超时更容易发现
  2. 简化了与非技术管理人员共享这些结果的过程?

我不想使用Robotframework固有的[Timeout]功能,因为我不希望由于这种超时而导致测试失败。我只想使用我的Robotframework脚本,以一种简单的方法来识别潜在的性能或临时网络问题。

2 个答案:

答案 0 :(得分:3)

在Robot Framework中,只有2种状态:PASS和FAIL,它们是驱动红色/绿色的状态。这与验证通常应通过或失败的情况的应用程序的性质一致。

一旦关键字或测试用例的性能变得有趣,那么我认为这不再应该成为测试套件本身的一部分。比较单个关键字/测试用例与基准的时间并不难。但是,如果您想在更长的时间内比较结果呢?您想将一种环境与另一种环境进行比较。然后,此设置将不起作用。因此,我建议使用报告或BI工具加载结果并创建性能报告。

如果这不可能,那么我可能会使用Test Case tags并使用“测试用例”消息来标记那些超出其基准的测试。在下面的示例中,有两个测试用例,其中第一个通过但超过了设置的基准。然后,通过报告功能,您可以过滤标签并使用“测试用例”消息显示逻辑错误。

*** 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

答案 1 :(得分:1)

不是以您描述的方式。绿色的关键字为Run Keyword If,并且已成功执行。

可能的解决方法: 通过以下方式使用关键字Run Keyword And Continue On FailureRun Keyword And Ignore Error(我无法确切地说出哪个):

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

因此,如果表达式${timeDiff} <= ${maxTimeout}不是true,则Should Be True将失败,并将在报告中标记为红色。但是,您需要将报告扩展到该关键字,因为它不在顶层。