Robot Framework 获取当前测试用例的名称

Posted

技术标签:

【中文标题】Robot Framework 获取当前测试用例的名称【英文标题】:Robot Framework get name of current test case 【发布时间】:2014-05-08 07:54:54 【问题描述】:

我有一组按测试用例分类的测试数据,我想要一个测试设置关键字来加载每个测试用例的数据。像这样的东西会起作用:

*** Keywords ***
Load Test Data
    [Arguments]  $test case name
    $data=  Get File  $test case name.txt
    Set Test Variable  $data  $data

*** Testcases ***
First Test
    Load Test Data  First Test
    Log  $data

Second Test
    Load Test Data  Second Test
    Log  $data

但是,最好不必在每个测试用例的开头包含“加载测试数据”关键字。是否有一个关键字可以获取测试用例的名称,所以我可以在“加载测试用例”中调用它并使其成为测试设置关键字,就像这样?

*** Settings ***
Test Setup  Load Test Data

*** Keywords ***
Load Test Data
    $test case name=  Get Test Case Name
    $data=  Get File  $test case name.txt
    Set Test Variable  $data  $data

*** Testcases ***
First Test
    Log  $data

Second Test
    Log  $data

基本上,“获取测试用例名称”的等价物是什么?

如果不能使用 Robot Framework 关键字轻松完成,我不介意用 Python 弄脏我的手。如有必要,我可以将“加载测试数据”创建为 Python 库。是否有一个类可以存储我可以访问的当前测试用例的名称?

【问题讨论】:

【参考方案1】:

经过一番挖掘,我在documentation找到了这个:

有一个内置变量$TEST NAME,所以我的测试用例看起来像:

*** Settings ***
Test Setup  Load Test Data

*** Keywords ***
Load Test Data
    $data=  Get File  $TEST NAME.txt
    Set Test Variable  $data  $data

*** Testcases ***
First Test
    Log  $data

Second Test
    Log  $data

【讨论】:

【参考方案2】:

此外,还有一个 $SUITE NAME 变量保存了主 txt 文件的名称。

【讨论】:

【参考方案3】:

你可以使用$TEST_NAME如果你想要一个套件中的测试用例的名称,$SUITE_NAME来获取包含测试用例的文件的名称(通常称为测试套件)。

【讨论】:

【参考方案4】:

就像附加评论和想法一样,如果您想处理文件和更复杂的逻辑,拥有更多控制权,用 Python 编写您的自定义机器人库可能是个好主意。

这样做时,您还可以通过这种方式访问​​“自动变量”或内置机器人变量:

from robot.libraries.BuiltIn import BuiltIn
BuiltIn().get_variable_value("$TEST NAME")

【讨论】:

【参考方案5】:

当任何测试用例发生错误,并且您想使用 Teardown 将屏幕截图文件重命名为失败的测试名称时,此功能很有用。

Test Teardown

    Take Screenshot     $TEST NAME.jpeg
    Kill Program

确保 $TEST NAME 中没有空格和 \ / 字符,否则 RIDE 将输出错误,假设是目录而不是文件名。我费了好大劲才找到这个。

【讨论】:

【参考方案6】:

关键字“获取标题”返回当前测试用例文件名,以下代码适用于我:

Load Test Data
    $title=   get title
    Set Test Variable   $data     $title
    Log  $data

【讨论】:

你确定吗?当我调用 Get Title 时,它会给我 Selenium robotframework.org/Selenium2Library/…,它返回当前网页标题。

以上是关于Robot Framework 获取当前测试用例的名称的主要内容,如果未能解决你的问题,请参考以下文章

是否可以为 Robot Framework 中所有测试用例中使用的最失败的关键字创建报告?

学习使用Robot Framework自动化测试框架——简单组合测试例子

Robot Framework之Remote—基本原理介绍

Robot Framework之Remote—基本原理介绍

Robot Framework之Remote—基本原理介绍

Robot Framework安装