Conditional Structure
A test case execution on a run-time can include or skip execution of specific step or tasks as per the specified condition is satisfied.
Key Points
You can add If-Else block to a task and test case much like conditional structures used in programming languages, with a limitation that nested IF blocks are not supported.
If block has the following structure:
IF – ELSE IF –ELSE – ENDIF
You can add zero or more occurrences of ELSE-IF and zero or exactly one occurrence of ELSE. Zero or multiple occurrences of IF blocks can be added to a task.
It is mandatory to add expression to evaluate for IF and ELSE IF steps. You cannot save these tasks with blank expressions.
Expressions are much like the ones used in programming languages.
You can form conditions based on the status of previous step, values of environment variables/stored variables and arithmetic, logical and bitwise operators.
You can avoid adding a task for adding a single step to test case. A step can be directly added to a test case. It is possible to specify object, action, and parameters to a TC step just like a task step.
Adding Conditional Structures
Inserting Conditional Blocks
Qualitia users can add conditional blocks using the ELSE-IF button.
Task Level Conditional Blocks
On the task editor screen, click Create Condition () to select any of the following conditions:
IF
Else IF
Else
Adding Expression for IF Step
Click Create Condition, select Add IF Condition (Control + Shift + I).
You can add Else block within an IF block.
Forming Expression for IF/ELSE IF:
Expressions can be entered for IF and ELSE IF conditional step. User can use stored variables, environment variables as expressions.
Ensure that IF/Else is added after an IF statement.
You can use Numeric, Boolean comparisons, string values, and arithmetic operators.
Environment variables and stored variables should be included in curly braces in expression.
User can save the execution status of last executed step as anyone of the following.
Using $$_STATUS directly in expression.
Saving status of step {$$_STATUS} for use as an expression.
User can save the execution status of a step in variable. This status can later be used as an expression of IF step.Saving execution status for future reference. You need to use StoreVariable Action and in the second parameter column enter as "{$$_Status}". For more information about $$_Status and similar variables, refer to Qualitia System Variables.
Examples of Expressions:
The following are some examples of valid/invalid expressions, assuming var1 and var2 as stored variables.
Note
The static or dynamic string data used should always be enclosed within double-quotes.
The expression, having string as data, should always be enclosed within double-quotes.
Boolean values are case-sensitive and should be used in lower case.
Data type | Example | Valid/Invalid |
---|---|---|
Any |
| All are invalid as assignment operator is not allowed in expression |
String |
|
|
Integer |
|
|
Float |
|
|
Boolean |
|
|
Logical operators | (var1=true , var2=false)
|
|
Arithmetic |
|
|
Relational Operators |
|
|
Bitwise Operators | (var1=60 , var2=13)
|
|
Special Characters | Using Qualitia Special characters:
Always use escape character ~ before qualitia special characters ~,^,{,} | All are valid |
ELSE IF Blocks on the Test Cases Screen
On the Test Cases screen you can add conditional blocks to Task and Test Case. The Test Case level ELSE-IF blocks can contain tasks and the contained tasks in turn can have task level ELSE-IF blocks.
Adding the ELSE-IF Blocks to Test Case
You can add the Test Case or Task condition using the ELSE-IF button from the test cases screen.
To add TC or Task Condition:
Select TC Step/Task after which you wish to add TC level conditional block.
Click Create Condition > Add IF Condition.
Select IF step of block, click Expand button next to Create Condition.
Click Add ELSE IF Condition to add TC level ELSE IF block.
Click Add ELSE Condition to add ELSE block.
Note: If you want to add an Else-If or Else condition, it must be added after the If condition.
Adding Tasks in Test Case Level ELSE-IF Blocks
You can add new tasks or import tasks from the existing library of tasks inside the conditional blocks.
To add tasks in TC level ELSE-IF blocks:
Select TC Step/Task after which you want to add TC level conditional block.
Click Create Condition > Add IF Condition.
Select IF step of block and then click Create Task to add new task.
Click on the new task, a popup will open. Select the existing task from the list and click Attach, if you want to attach the existing task to the conditional block.
To add Tasks to ELSE-IF or ELSE blocks, select the ELSE-IF or ELSE step of the conditional block.
Do one of the following to include a task:
To add a new task, click Create Task ().
Note: If you want to add an Else-If or Else condition, it must be added after If condition.
Adding ELSE-IF Blocks to Task in TC
You can add the conditional blocks particularly for task.
Note: If you want to add an Else-If or Else condition, it must be added after If condition.
To add conditional blocks to a task from the Test case:
Create a new test case and add required tasks to it.
Select the step after which the conditional block needs to be added, or the task row to which the block needs to be added.
Click Create Condition icon > Add IF Condition.
Once If block is added to task, ELSE IF or ELSE blocks can be added by selecting proper task step and using the Create Condition button.
For adding expression, double-click IF or ELSE IF.
Use the syntax of expression is as described earlier.
Execution flow of conditional (ELSE-IF) blocks will be as follows:
Qualitia validates expression entered by the user and checks if the expression is empty or contains assignment (for example, if user entered a=b which is invalid). Expressions should not have assignment, users should use "==" operator instead. Hence {a}={b} is invalid expression.
Rest of the syntax and semantics is checked during the actual execution of test case.
You must enclose stored variables, environment variables in curly braces (for eg: {a}=={b}, or ($$_Status}==0.
Consider the following test case level conditional block:
OpenUrl
IF {$$_Status}==0
Task1
Task2ELSE IF {$$_Status}==1
Task3ELSE
Task4END IF
If during execution, the step OpenUrl is successful, then Task1, Task2 is executed.
If the step OpenUrl fails, then Task3 is executed.
If the OpenUrl has execution status other than 0 or 1, Qualitia executes Task 4.
Qualitia's Behavior in case of Invalid Expression:
If the expression is invalid, for example, expression has stored variables referred but not declared, or the syntax of expression is invalid then the test case is considered to have an error and Qualitia will stop execution of test case.
When execution is triggered using the Dry Run button from the Develop tab and if the expression is invalid, Qualitia stops execution of test case.
When execution is triggered using the Run Now button from the Execute tab and if the expression is invalid, Qualitia executes next test case. If there is only one test case, execution will be stoppped.
In all such cases, Error log in reports will explain the reason of execution failure so that users can take corrective actions.
Test Case Iteration Report for Conditional Structure
The test case iteration report that contains the IF_Else conditional statements displays associated results in a hierarchy. The condition "IF" is the parent node for Else If, Else, and End If statements. No status is shown for the conditional statements (IF-ELSE IF –ELSE and END IF) as they are constructs and not actions.
The steps in conditional block are mentioned in the report only if expression evaluates to "true". Steps of blocks whose expression evaluates to "false" are omitted from report as these steps are not executed.
Handling Special Characters in Conditional Expression
In Qualitia Automation Studio, while adding data for validating conditional expression, you can add the string values. Sometimes, these string values can contain JavaScript special characters, such as double quotes, single quotes, and backslash (",',\).
When adding string with such characters as data into Conditional Expression, you must use an escape character. As the name suggests, this escape character allows you to get the desired output without treating these characters as special. You can use backslash (\) as a JavaScript escape character in case you have characters like double quotes, single quotes, and backslash (",',\) in the conditional expression data.
As shown in the screenshot below, if you are using values like single quotes, double quotes or backslash in conditional expression, you need to use escape character (/).
Important Note
In case you have any special characters into the variable value, Qualitia automatically handles them while using it as a conditional expression data.
For example, if you are using StoreVariable action to store some value and that value contains JavaScript special characters. Later, if you use that variable in the conditional expression, no need to handle special characters from the value. Qualitia automatically handles them while using it as conditional expression data.
Limitations
Nested IF blocks are not allowed
Task level IF, ELSE IF or ELSE blocks can be moved up or down within the task whereas test case level IF, ELSE IF or ELSE blocks cannot be moved up or down.
$$_Status can be used only for step's execution status. There is no provision to store or refer Task's execution status.
A test case level step cannot be moved to task, or multiple test case level steps cannot be moved to new or existing tasks.