In the root of the test directory, I have this setting.robot
file which includes the global variables used in all test suites and test cases. This file has been used as resource
in all test cases:
*** Variables ***
${Variable1} value1
${Variable2} value2
${Variable3} value3
${Variable4} value4
...
Now suppose this is the test hierarchy I have:
-- Suite1
------ Test1
------ Test2
-- Suite2
------ Test3
------ Test4
I might need to change the value of ${Variable1}
in Test1
, so in the setup
of Test1
I use this code:
Set Global Variable ${Variable1} NewValue
The problem with this approach is the I am changing the value globally, and this will affect the other tests. Another solution is to use Set Variable
:
${Variable1}= Set Variable NewValue
The problem with this method is that this variable change does not affect the lower level user keywords
:
Prior to Robot Framework 2.9 variables in the local scope leaked to lower level user keywords. This was never an intended feature, and variables should be set or passed explicitly also with earlier versions.
So how can I have global variables which can be changed per test case when needed without affecting other tests?