Using a Data Provider¶
We previously learned how a data set list can be passed to a parameterised test step to run a single step once per set of data.
We defined the data list set within our test. Doing so can get cumbersome over time. An overly-large collection of data can make the test hard to follow. We run the risk of too-closely coupling that which is being tested with the data with which it is being tested.
A data provider imported into a test addresses these matters.
Creating a Data Provider¶
We create a data_providers
section within our imports
section, choose an import a name and give the
path to our data provider.
Now just pass the import name we chose as the data
property of the test.
# examples/data-provider/google-search-query.yml
foo:
search_term: "foo"
expected_title: "foo - Google Search"
bar:
search_term: "bar"
expected_title: "bar - Google Search"
# examples/test/google-search-parameterised-with-data-provider.yml
config:
browsers:
- chrome
url: google_com.url
imports:
steps:
assert_opened_page_step: "../step/assert-page-open-parameterised.yml"
query_step: "../step/google-search-query-parameterised.yml"
data_providers:
imported_query_data: "../data-provider/google-search-query.yml"
"verify Google is open":
use: assert_opened_page_step
data:
0:
expected_url: $config.url
expected_title: "Google"
"query":
use: query_step
data: imported_query_data