Tutorial 8 – DataTable (asLists) in Cucumber BDD
What you will Learn :
DataTable concept
DataTable asLists
DataTable concept
We will now study about Data Table concept in Cucumber BDD. We can parameterize a particular step in our feature file. For example, I might want to do a couple of user registrations with multiple users. Now, to register a user, we might need to enter the user’s firstname, lastname, etc.
Consider the below block to register a single user. It would become cumbersome if we repeat the same block again and again to register all the users.
To make this simpler, we will use the DataTable feature in cucumber and write as follows. We write the pipe separated user data and notice that the feature file is more readable now. The file contains the data of 3 users.
Save the file
Let us now run this file to generate the step definition methods
Copy the code snippets
Paste them in a step definition file
Import the missing packages and remove the comments plus exceptions. If you notice, for the second method, the data is coming in the form of dataTable. Also, it is coming from library io.cucumber.datatable.DataTable
If you want, instead of writing io.cucumber.datatable.DataTable, you can simply write DataTable (see below)
However you have to import the same package io.cucumber.datatable
So let us do that
So when the 2nd step @When will be executed, the multiple data sets that you have given in the feature file will be coming to this particular dataTable
Next, let us write simple SOPs for first and third step
Next, let us now concentrate on second step @When, see below
DataTable asLists
As you can see below, there is a method asLists() available
Let us use that method
Now, what kind of list you want to get? We want to get ‘String’ type of list, because the dataset in the feature file is in string format. So we will simply write String.class
Now, as you can see below, this asLists() method returns “List of List of object”. Again, this list will again be of type ‘String’
So we can say
Next, let us import this list from java.util package
So we have
Next, we will create a ‘for’ loop so that we can traverse this particular userList.
So, we want to traverse through a ‘List of string’ viz List<String>
We will next print the value of ‘li’
It means, print each and every list. So in the first iteration, we will be getting the first list viz first set of data
In the second iteration, we will get
And so on…
Save the step definition file.
Let us now re-run our feature file
See the console. When the user is on registration page, we are entering the 3 data set of values
So like this way, you can use the concept of datatable in cucumber. The datatable can be applied to any type of step Given/When/Then etc..
Let us create a RunnerTest file and run it as Junit test
See the console o/p below. We get exactly the same thing
Reference
You can further refer www.baeldung.com/cucumber-data-tables
Thank you for reading!