python - 有没有办法改变日志文件中运行的关键字的颜色,即使该关键字成功?
问题描述
因此,对于我的机器人框架项目,我一直在研究一种方法来了解我的测试用例中的给定操作是否“比它应该花费的时间更长”;这就是说,考虑到以前执行的结果,我可以知道一个动作通常需要多长时间,并且,如果一个动作超过了那个时间,我希望在我的日志文件中指出这个事实.
为此,我使用DateTime
库来比较时间,然后,如果测试用例开始和操作结束之间的时间差超过 X 秒,则会打印 WARN 级别的日志,同时控制台和日志文件。
但是,在该日志文件中,已成功执行的每个关键字都显示为绿色,如屏幕截图所示:
我的问题是:如果给定关键字实际上超过了软超时,是否有可能让该特定关键字以除绿色以外的任何其他颜色出现,以便:
- 使软超时更容易被发现
- 简化与非技术管理人员分享这些结果的过程?
我不想使用[Timeout]
Robotframework 的原生功能,因为我不希望我的测试因为这种超时而失败。我只想有一种简单的方法来使用我的 Robotframework 脚本来识别潜在的性能或临时网络问题。
解决方案
在 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
推荐阅读
- design-patterns - 顶点中的条件方法链接
- jquery - 防止多选框在移动浏览器上的多选框中不更改
- r - ggplot2 带有 2 个数据集的分组条形图
- assembly - 如何更改字符串的前景色(32 位汇编内核)?
- rspec - 无法在 RSpec 共享示例中调用方法
- typo3 - 添加 data-* 属性以链接到 html 元素
- google-sheets - 根据 Google 表格中的总金额计算扣除水平的增加
- android - appcompatv7-28.0.0.jar 是否已弃用?
- sql - 更新速度临时表与表变量
- time - 如何按顺序排列日期范围并删除 Teradata 中的重叠