Robot Framework get name of current test case

23,579

Solution 1

After a bit of digging, I was able to find this in the documentation:

There is a built-in variable ${TEST NAME}, so my test case would look like:

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

Solution 2

Also, there is a ${SUITE NAME} variable that holds the main txt file's name.

Solution 3

You can use ${TEST_NAME} if you want the name of test case inside a suite,${SUITE_NAME} to get the name of the file which contains the test cases ( Generally referred as Test Suite).

Solution 4

Just as additional comment and idea, if you want to handle files and more complex logic, have more control, it's perhaps good idea to write your custom robot library in Python.

When doing that, you can access also the "automatic variables" or built-in robot vars this way:

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

Solution 5

This feature is useful when an error occurs in any test case, and you want to rename the screenshot file with the failed test name, by using Teardown.

Test Teardown
    Take Screenshot     ${TEST NAME}.jpeg
    Kill Program

Make sure that ${TEST NAME} has no empty spaces and no \ / characters in it, otherwise RIDE will output an error, assuming a directory instead of a filename. I was struggling a lot to find this one.

Share:
23,579

Related videos on Youtube

Lorkenpeist
Author by

Lorkenpeist

This space intentionally left blank

Updated on July 09, 2022

Comments

  • Lorkenpeist
    Lorkenpeist 6 months

    I have a set of test data that is categorized by test case, and I would like to have a test setup keyword that loads the data for each test case. Something like this would work:

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

    However, it would be nice not to have to include the "Load Test Data" keyword at the beginning of each test case. Is there a keyword that can get the name of the test case, so I can call it inside of "Load Test Case" and make it a test setup keyword, like so?

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

    Basically, what would the equivalent of "Get Test Case Name" be?

    If it can't be done easily using Robot Framework keywords, I don't mind getting my hands dirty with Python. I could create "Load Test Data" as a Python library if necessary. Is there perhaps a class that stores the name of the current test case, that I could access?

  • MarkHu
    MarkHu over 2 years
    Are you sure about that? When I call Get Title it gives me the Selenium robotframework.org/Selenium2Library/… which returns current web page title.

Related