Datasets
Datasets supply {{variable}} values from outside your script, bound when a test plan runs. Same script, different data.
A dataset is a named set of values bound to your tests at run time. One script covers many environments and accounts.
Platforms
Android · iOS
Authored as
YAML key/value, in the Datasets area
Types
string · number · list · object
Nesting
2 levels overall. Deeper is rejected on save
Watch out
Binding happens when a test plan runs, not when you write the script
Prerequisites
Drizz desktop app installed and signed in
A project containing the tests the dataset will drive
A test plan, to bind the dataset to
Copy this
The dataset — shopease_staging:
app_package: com.shopease.android
phone: "9000000000"
otp: "123456"
city: Bangalore
search_term: running shoesThe test that uses it:
A second dataset pointed at production, bound instead, runs the same test there.
Create and bind a dataset
Open the Datasets area of the desktop app.
Author the dataset as YAML key/value pairs.
Save the dataset. Save rejects more than two levels of nesting.
Reference each key in the script as
{{key}}.Open the test plan that runs those tests and select the dataset on its Data set tab.
Confirm the unresolved-variable counter reads zero. A plan can't be saved or run while a variable is unresolved.
Value types
String
city: Bangalore
Quote anything that must stay a string
Number
max_items: 5
otp: 012345 unquoted is read as the number 12345
List
categories: [shoes, bags, watches]
Object
user: then an indented email: qa@example.com
Reference as {{user.email}}
Nesting limit
Nesting is capped at two levels overall. This is accepted:
This is rejected on save:
Flatten a third level into the key — user_address_city: Bangalore.
Referencing a variable
{{key}}
The value of that key, anywhere a value goes, in any command
{{key.field}}
A field of an object value
Names are case-sensitive and must match the dataset key exactly.
Binding
Binding happens on the test plan, not in the script. Every {{variable}} in every test in that plan resolves from the bound dataset. The same test case is used by different people testing different cases, so the data belongs to the run rather than the file.
Running a single test from the editor prompts for its variable values for that one run.
A plan that contains variables but has no test data bound at all can misread SET steps. Bind a dataset — an empty one is enough — to any plan whose tests use variables.
Editor behavior
Green token
The variable exists in the selected dataset. Hover shows the bound value
Red token
The variable doesn't exist in the selected dataset. It resolves to nothing, and the run fails several steps later — most often as "element not found"
Autocomplete on {{
Suggests variables visible in the current context. Suggestions are fetched when typing pauses, not on every keystroke. Selecting one places the cursor after the closing }}
Autocomplete isn't a complete list of everything a plan might bind. The dataset is the source of truth.
Data that can't be shared
Login credentials, phone numbers and accounts mid-flow can't be used by two runs at the same time. Mark the dataset a lockable pool so each parallel run leases its own row. See Lockable pools.
Common mistakes
otp: 012345 unquoted
Read as the number 12345. The leading zero is gone
{{Phone}} when the key is phone
Renders red, resolves to nothing
Three levels of YAML nesting
Rejected on save. Flatten the key
Picking a dataset while writing the script
There's nothing to pick. Binding happens on the plan
OPEN_APP {{shopease_staging}} — the dataset name
Corrupts the value. Reference the key, not the dataset
A plan with variables and no dataset bound
SET steps can be misread. Bind one, even an empty one
Next
Last updated: 6 August 2026
Last updated
Was this helpful?