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

时间:2014-03-28 17:48:14

标签: robotframework

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

*** 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库。是否有一个类存储当前测试用例的名称,我可以访问?

6 个答案:

答案 0 :(得分:23)

经过一番挖掘后,我在文档中找到了这个: http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#automatic-variables

有一个内置变量${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}

答案 1 :(得分:2)

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

答案 2 :(得分:2)

当在任何测试用例中发生错误,并且您希望使用拆解重命名具有失败的测试名称的屏幕截图文件时,此功能非常有用。

Test Teardown

    Take Screenshot     ${TEST NAME}.jpeg
    Kill Program

确保$ {TEST NAME}没有空格且没有\ /字符,否则RIDE将输出错误,假设是目录而不是文件名。我很努力地找到这个。

答案 3 :(得分:1)

如果您希望套件中的测试用例名称为${TEST_NAME},则可以使用${SUITE_NAME}来获取包含测试用例的文件的名称(通常称为Test Suite)。

答案 4 :(得分:0)

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

const Cart = createStackNavigator({
    Cart :{
      screen:Cart,
      navigationOptions: ({navigation}) => ({

        headerTitle: 
                <Text style={{ textAlign:'center',fontFamily:'circe-bold',fontSize:width / 18,color:'white'}}>CART</Text>

      ,
        headerStyle: {
          backgroundColor: '#4f9cdf'
        },
      })
    },
    Delivery:{
      screen:Delivery,
      navigationOptions: ({navigation}) => ({
        header:null
      })
    },

  },
  {
    transitionConfig: getSlideFromRightTransition,
  },

);

答案 5 :(得分:0)

就像其他注释和想法一样,如果您想处理文件和更复杂的逻辑并拥有更多控制权,那么最好使用Python编写自定义机器人库。

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

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