Robot Framework get name of current test case

Lorkenpeist picture Lorkenpeist · Mar 28, 2014 · Viewed 19.6k times · Source

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?

Answer

Lorkenpeist picture Lorkenpeist · Mar 28, 2014

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}