【问题标题】:Elapsed time and result of a test in variables变量测试的经过时间和结果
【发布时间】:2014-11-03 11:40:47
【问题描述】:

是否可以在变量中确定当前测试的经过时间和结果?

我想要一些测试来记录他们在外部系统中的结果,所以最好在 [Teardown] 中我想知道:

  • 当前测试的经过时间
  • 测试结果

这可能吗?

【问题讨论】:

  • 测试状态可通过自动变量 ${TEST STATUS} 获得,但只能在测试拆解中获得
  • 很高兴知道 - 可能会有类似 ${TEST ELAPSED TIME} 的东西吗?

标签: robotframework


【解决方案1】:

侦听器接口在每个关键字、测试和套件执行结束时提供以毫秒为单位的经过时间。请参阅用户指南中标题为 Taking listeners into use 的部分。

从机器人框架 2.8.5 开始,您可以在库中实现侦听器,这意味着您可以将此功能构建到测试套件中,而不是依赖命令行选项来设置侦听器。请参阅用户指南中标题为 Test libraries as listeners 的部分。

示例

以下示例显示了您可以如何实现侦听器接口。该库会打印名称、状态和经过的时间,但您也可以轻松调用 Web 服务、将数据插入数据库或将数据写入文件。

ReporterLibrary.py

class ReporterLibrary(object):
    ROBOT_LIBRARY_SCOPE = 'TEST SUITE'
    ROBOT_LISTENER_API_VERSION = 2

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self

    def _end_test(self, name, attrs):
        print "%s => status: %s, elapsed time: %s ms" % (name, attrs['status'], attrs['elapsedtime'])

Example.robot

*** Settings ***
| Library | ReporterLibrary.py

*** Test Cases ***
| Example of a passing test
| | sleep | 200 milliseconds
| | Pass execution | test passed

| Example of a failing test
| | sleep | 500 milliseconds
| | Fail | test failed

【讨论】:

  • 很好地补充了侦听器作为库。我想传递额外的信息(比如测试用例上下文,有时还有文件附件),我可以通过调用侦听器类中的其他方法来做到这一点。当 end_test() 被调用时,它可以从 self 中获取这些项目,然后将它们清除以进行下一次测试——我认为这种方式将是一个非常干净的实现!
  • 你能告诉我如何将实现调用为关键字,或者如何在拆卸部分传递经过的时间吗?
猜你喜欢
  • 2022-09-26
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多