In Rapi, local variables can be declared and set with values by store command series. For example, given the following command:
storeText | //input[@name='q'] | var_keyword
After executing the command, the value of variable var_keyword
will be set to the target element’s value, say “iphone”. After that, the variable can be used in another command's target or value via the form ${var_keyword}
.
Besides, global variables can be declared and set with initial values via the Global Var
panel. A user can either manually add variables or import the variables from a file of JSON or CSV format. After defining the variables, they can be exported as a file for further usage. Another way to create a global variable is using storeGlobalVar
command. The following example shows that a global variable GlobalVarA
will be created with an initial value newValue
if GlobalVarA
is not declared in Global Var
panel in advance.
storeGlobalVar | newValue | GlobalVarA
Mixed usage of local and global variables is not recommended, i.e., to use the same variable name for both local variable and global variable. If it is inevitable, please read the following rules carefully.
v is predefined as ↓ | A. store|x|v | B. storeGlobalVar|x|v | C. storeXXX|x|v |
---|---|---|---|
1. local variable | Update the local variable | Create a global variable | Update the local variable |
2. global variable | Create a local variable | Update the global variable | Update the global variable |
3. local and global variables | Update the local variable | Update the global variable | Update the local variable |
4. not yet defined | Create a local variable | Create a global variable | Create a local variable |
A mixed usage example is as follow:
storeGlobalVar | globalStr | Var1
storeText | Google| Var1
storeText | Rapi | Var2
store | localStr | Var1
storeText | Rapi | Var1
The execution process of the example is:
Var1
with value globalStr
. (rule B4
)Var1
to Google
. (rule C2
)Var2
with value Rapi
. (rule C4
)Var1
with value localStr
. (rule A2
)Var1
to Rapi
. (rule C3
)Interpreting a variable in a command's target or value is a string replacement - replacing ${var_name}
by the variable’s runtime value. Therefore, using a variable as string type in a Javascript expression of a command (e.g., runScript
) should be placed within quotation marks. For example, if you want to compare a variable to a string, use
"${var_name}" == "Guest"
If your string already contains both single and double quotation marks, consider using String.raw()
String.raw`${var_name}` == "Guest"
If you want to compare a variable to an integer, use
${var_num} == 100
In Rapi, if you use storeEval
command to create a variable and the return value of Javascript expression is array type, it will be converted to a JSON string when it is interpreted. For example, given the following commands:
storeEval | return ["S","i","d","e","e","X"] | arr
storeEval | return ${arr}.length | length
store | 0 | index
WHILE | ${index} < ${length}
storeEval | return ${arr}[${index}] | show
echo | ${show}
storeEval | return ${index} + 1 | index
END
After executing the above commands, Rapi will iteratively echo each value from the array arr
.
In Rapi, interpreting variables can be nested. For example, given the following commands:
store | 1 | Ser
store | Hello Rapi | Msg1
echo | ${Msg${Ser}} |
After executing the above commands, Rapi will echo Hello Rapi
in Log. ${Ser}
will be set to 1
at first, so Msg${Ser}
will be evaluated as Msg1
. Then ${Msg1}
will be set to Hello Rapi
.
In Rapi, you can use WHILE
, INCLUDE
, and Nested Variable
to complete Data-Driven Testing.
{
"numberOfRecords":2,
"record":[
{
"userName":"User1",
"loginMsg":"Welcome"
},
{
"userName":"User2",
"loginMsg":"Please signup"
}
]
}
Nested Variable
to refer to these records in test cases. (Variable index
will be defined in step 3.)ExampleTestSuite.MainTestCase
echo | ${record.${index}.userName} |
echo | ${record.${index}.loginMsg} |
ExampleTestSuite.LeadingTestCase
store | 0 | index
WHILE | ${index} < ${numberOfRecords} |
INCLUDE | ExampleTestSuite.MainTestCase |
storeEval | return ${index}+1 | index
END
After the execution of test cases, the last values of the local and global variables can be obtained from the test reports. Please refer to Rapi Test Report Specification。