首页 > 解决方案 > 有没有办法改变日志文件中运行的关键字的颜色,即使该关键字成功?

问题描述

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

为此,我使用DateTime库来比较时间,然后,如果测试用例开始和操作结束之间的时间差超过 X 秒,则会打印 WARN 级别的日志,同时控制台和日志文件。

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

日志文件剪辑截图

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

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

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

标签: pythonseleniumrobotframework

解决方案


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

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

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

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

在此处输入图像描述 在此处输入图像描述


推荐阅读