The workflow of a test-case can be tested using keyword or data driven style. In case you want to test the workflow with different inputs, the same can be done using data driven test cases. We will work on an example to go through the following test case approaches −
We will do a project setup to show the working of Keyword driven style.
Open ride using ride.py from the command line.
Click on New Project and give a name to your project.
The name given to the project is keywordstyle. Click OK to save the project. In this project, we will create a user keyword as shown below.
Right-click on the name of the project and click on New User Keyword as shown below
It will display screen as follows −
Enter the name of the keyword and the arguments it will take. Here we will give name of the keyword as Display Message. The role of Keyword Display Message is, when it is called, it will log a message. So we need to give an argument to it. Therefore, in the above example the argument will be a scalar variable ${msg}.
Click OK to save the user keyword. Now we need to write the action the keywords need to do. So, it will have tabular format as shown below where we can give the Library keywords or built-in keywords available with Robot Framework.
Here, we will use a simple Log keyword available with Robot Framework as shown below −
To get more keywords available with Robot framework, press ctrl + space bar in the table column as shown below −
So the keyword we want to use with our testcase is ready. The name of the user keyword is Display Message and it takes one argument called ${msg}.
Let us now use this keyword in simple keyword driven style test-case. To do that we need to create test case. Right-click on the name of the project created. Now, click New Test Case −
Give name to the test case and click OK.
We are done with the project setup and now will write test cases for the keyword driven style.
In the test case, we have used the user-defined keyword Display Message in the tabular format as shown below −
We have used the keyword we have created as shown above and passed the value Hello World.
We will execute the test case TC1 and check the output −
In the above example, we have written a simple test-case which logs message and the test case is executed with output Hello World. We can see the output Hello World printed in the log. The test case is also passed here.
We will create one more test case in the same project. We will give the name of the test-case as TC2.
To work with data driven style, we need to create template. Template will take the name of the high level keyword, which is a user-defined keyword like the one we created at the start called Display Message. The arguments to that template will be sent in the form of test-cases. We can pass different values to that template keyword. The data driven approach is mostly used when you want to test the scenario with different data to it.
Once the test case is saved. Click on the test case and the display will be as follows −
Click on Edit button for Template and add the user-defined keyword.
Enter the user keyword for the template and click OK to save the template.
Display Message keyword takes one argument called ${msg}. This is a scalar variable. The details passed in this test case will act as arguments to the user-defined keyword Display Message.
In TC2, we have added Template Display Message (user-defined keyword). We have given messages in the tabular format.
Let us now execute the test case.
We can see Run executes both the Test Cases. The output shown for TC1 is Hello World. This was the message we had given to the User Keyword Display Message.
For TC2, we used Display Message as a Template. We passed My First Test Case and Testing Template as values in TC2. As the user keyword Display Message uses internally Log Keyword, it displays the message in the log as shown above.
We have used keyword style and data driven style in this chapter and seen the working of both. Data Driven style takes high-level user-defined keyword as a template and all the test cases act as values to the template.