In GUI functional testing, sometimes you may want to parameterize your test to use external data instead values hardcoded in the test body. You can upload a CSV file with data that you want to inject to your test.
This article covers parameterizing test data in a Taurus YAML script. Alternatively, you can also Parameterize Test Data in Scriptless Tests.
This article covers the following topics:
- Create data-provider file
- Upload file to Blazemeter
- Refactor test to use data from file
- Run test
Let's say we already have a simple test as a YAML file. The test will go to the http://blazedemo.com site, then select values in two dropdowns, submit the selection and, finally, will assert that the next page appears with the expected header:
- executor: selenium
- label: Test
- selectByName(fromPort): "Boston"
- selectByName(toPort): "Rome"
- assertTextByCSS(h3): "Flights from Boston to Rome:"
We can see hardcoded data in selectByName() and assertTextByCSS() commands, which we'd like to replace by parameters.
Create data-provider file
BlazeMeter allows usage of .csv files as data-providers for test. Let's create a "params.csv" file for our test from precondition section:
First row represents names for our parameters, all the following rows are the values for the parameters. So in our "params.csv" file we have 3 rows of data.
Upload file to Blazemeter
After we've created a data-provider file, let's upload it to test in Blazemeter.
Just upload the file for required test using Blazemeter interface:
Refactor test to use data from file
Now that we have the data-provider file "params.csv" uploaded, let's refactor the test to use our file instead hardcoded data in test:
- Set "iterations" parameter to 0 (which means do as many iterations as many rows of data we have in our file). For more information on iteration settings, see How to Load Test Data from Spreadsheets in Scriptless Tests.
- Link scenario with data-provider file.
- Replace hardcoded data by parameters.
Now we have our test parameterized by data from the "params.csv" file. Since we have 3 rows of values in the file, our test will be executed 3 times, each time with different data (1 iteration = 1 row of data).
Each iteration will be executed in a separate session of the web driver: